我想仅打印网站页面中textarea元素的内容。 特别是,我想确保文本区域的边界不会剪切任何内容,因为内容会很大。
解决这个问题的最佳策略是什么?
制作一个打印样式表,其中所有元素(除了文本区域)在 CSS 中设置为显示:无;对于文本区域,溢出:可见。
将其链接到页眉中的链接标记设置为 media="print" 的页面。你已经完成了。
更新:我认为所建议的CSS解决方案可能是更好的策略,但如果有人喜欢这个建议,他们仍然可以投票。
不要使用样式表覆盖来取消整个页面的打印按钮,而是在文本区域旁边提供一个按钮,让用户仅打印这些内容。
该按钮将打开一个新窗口,其中包含菜单/镶边等,并仅克隆文本区域内容(和/或提供打印 CSS 文件)
textarea {
display: none;
}
*/ #divtext {
display: block;
}
div, DIV {
border-style: none !important;
float: none !important;
overflow: visible !important;
display: inline !important;
}
/* disable nearly all styles -- especially the nicedit ones! */
#nav-wrapper, #navigation, img, p.message, .about, label, input, button, #nav-right, #nav-left, .template, #header, .nicEdit-pane, .nicEdit-selected, .nicEdit-panelContain, .nicEdit-panel, .nicEdit-frame {
display: none !important;
}
/*hide Nicedit buttons */
.nicEdit-button-active, .nicEdit-button-hover, .nicEdit-buttonContain, .nicEdit-button, .nicEdit-buttonEnabled, .nicEdit-selectContain, .nicEdit-selectControl, .nicEdit-selectTxt {
display: none !important;
}
nicEdit 的 javascript 代码:
<script type="text/javascript" src="/media/nicEdit.js"></script>
<script type="text/javascript">
bkLib.onDomLoaded(function () {
var nic = new nicEditor({
fullPanel: true
}).panelInstance('storyText');
document.getElementById("storyText").nic = nic;
nic.addEvent('blur', function () {
document.getElementById("storyText").value =
nic.instanceById('storyText').getContent();
document.getElementById("divtext").innerHTML = nic.instanceById('storyText').getContent();
});
});
</script>
我和OP有同样的问题。我的方法是抓取文本区域,创建一个仅包含文本区域的新选项卡/窗口,添加一个打印按钮并将其从实际的硬拷贝中隐藏。它很混乱且迂回,但它应该在任何情况下都有效。
function Print () {
var body = document.getElementById("journal-entry").value; // grab the textarea
var winContents1 = '<!doctype html> <html lang="en"><head> <meta charset="utf-8"/> <link rel="shortcut icon" ' +
'href="Include/favicon.ico"> <title> General Notes </title>' + '</head> <body id="Body"> ' +
"<style type='text/css'> @media print { @page { margin-left: 0.5in; margin-right: 0.5in; " +
"margin-top: 0; margin-bottom: 0; } #printPB { display: none; } } </style> <pre>\n";
var winContents2 = "\n</pre> <button id='printPB' onclick='window.print()'" +
">Print General Notes</button> </body> </html>";
var w = window.open('about:blank');
w.document.open();
w.document.write(winContents1 + body + winContents2);
w.document.close();
}