Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 打开包含不同HTML内容的打印对话框窗口_Javascript_Html_Css_Printing - Fatal编程技术网

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();
    }