Javascript 打开包含不同HTML内容的打印对话框窗口
为了打开当前页面的打印对话框,我们执行如下操作:Javascript 打开包含不同HTML内容的打印对话框窗口,javascript,html,css,printing,Javascript,Html,Css,Printing,为了打开当前页面的打印对话框,我们执行如下操作: <a href="javascript:window.print()">Print</a> 如何在当前页面中创建一个链接,该链接将以与实际页面不同的上下文打开打印对话框 在Chrome中打印对话框: 我不确定这是否真的是对你问题的回答,因为你的问题几乎没有关于打开一个新窗口意味着什么的细节 如果您在/page/one上,并且希望打开一个链接/report/page并自动打开打印对话框…那么这就像触发窗口一样简单 &
<a href="javascript:window.print()">Print</a>
如何在当前页面中创建一个链接,该链接将以与实际页面不同的上下文打开打印对话框
在Chrome中打印对话框:
我不确定这是否真的是对你问题的回答,因为你的问题几乎没有关于打开一个新窗口意味着什么的细节 如果您在/page/one上,并且希望打开一个链接/report/page并自动打开打印对话框…那么这就像触发
窗口一样简单
<body onload='window.print()'>
如果您不希望该页面始终打开打印对话框,则在您想要打印时,创建指向新页面/report/page?print=1
的链接或类似的链接,并且在URL中找到该链接时,触发onload事件
在玩了一番(并在谷歌上搜索了一下)之后,我想出了一个解决方案:
我在当前视图中添加了一个non-printable
类,在可打印容器元素中添加了printable
类。在我的CSS中,我使用where@media screen
和@media print
状态包含相应的显示行为:
@media screen {
.printable { display: none; }
.non-printable { display: block; }
}
@media print {
.printable { display: block; }
.non-printable { display: none; }
}
现在,我可以从当前视图打印新内容,而无需打开新选项卡或更改当前视图
查看这个和的列表。有一个很好的Javascript插件,名为PrintThis,它可以很容易地完成这项工作
您只需使用jQuery
选择器并调用插件,例如:
$('selector').printThis();
在分区中包括可打印内容。例如:
HTML:
这是用于打印的示例文本
不要打印
JQuery:
function printFunc() {
var divToPrint = document.getElementById('printarea');
var htmlToPrint = '' +
'<style type="text/css">' +
'table th, table td {' +
'border:1px solid #000;' +
'padding;0.5em;' +
'}' +
'</style>';
htmlToPrint += divToPrint.outerHTML;
newWin = window.open("");
newWin.document.write("<h3 align='center'>Print Page</h3>");
newWin.document.write(htmlToPrint);
newWin.print();
newWin.close();
}
函数printFunc(){
var divToPrint=document.getElementById('printarea');
var htmlToPrint=''+
'' +
'表th,表td{'+
'边框:1px实心#000;'+
'填充;0.5em;'+
'}' +
'';
htmlToPrint+=divToPrint.outerHTML;
newWin=window.open(“”);
newWin.document.write(“打印页”);
newWin.document.write(htmlToPrint);
newWin.print();
newWin.close();
}
它将只打印可打印的div。谢谢嘿,Lior,回答得很好,如果我想打印嵌入对象标记或iframe中的pdf文件呢?在这种情况下有解决办法吗?喜欢你答案中的创意。这是迄今为止我在网上找到的最好的!很抱歉回复太晚
window.print()
是一种打开带有当前内容的内置浏览器打印对话框的方法,这不是我的初衷。我想用与页面内容不同的内容打开“打印”对话框。
function printFunc() {
var divToPrint = document.getElementById('printarea');
var htmlToPrint = '' +
'<style type="text/css">' +
'table th, table td {' +
'border:1px solid #000;' +
'padding;0.5em;' +
'}' +
'</style>';
htmlToPrint += divToPrint.outerHTML;
newWin = window.open("");
newWin.document.write("<h3 align='center'>Print Page</h3>");
newWin.document.write(htmlToPrint);
newWin.print();
newWin.close();
}