document.addEventListener("DOMContentLoaded", printFunction);
function printFunction() {
//setTimeout(function(){
var file_name = ("{{article['title']}}".replace(/[^0-9a-zA-Z_?: .]/g, ""));
document.title="Scroll - "+file_name;
window.print();
setTimeout(function(){window.close();}, 1);
//}, 1);
}
嘿我试图通过打开一个新的打印标签打印页面,Print Preview
自动打开,如果用户打印或取消页面,它会自动关闭。但是当我在两个选项卡上打开它时print preview
只会加载到一个选项卡上而其他选项卡print preview
上没有加载。有没有解决方法。
更新
我注释掉了setTimeout方法,现在我可以在每个标签上打开打印预览但是当我关闭一个打印预览时,我的所有其他标签都将关闭
点击这样的链接打开我的打印页面
a(href="/article/print/{{article['id']}}", target="_blank")
更新
现在我尝试使用_new
代替_blank
或标签名称。但是,当我从4个不同的地方点击打印时,不同文章的4个标签打开了打印预览,但取消打印预览,其中一个标签没有关闭,直到我取消打开的第一个标签上的打印预览。 Ajax调用也被停止了。
更新
我有一个无限可滚动的网站。意思是第一篇文章我通过Flask之后我正在使用Ajax调用来获取其他文章,如果用户滚动了一下。现在我在每篇文章上都有打印按钮。当用户点击某个打印按钮时,如果我使用了target = _blank
,则会打开一个新选项卡并打开打印预览。现在,如果他再次单击打印按钮,将打开一个新选项卡,其中包含该文章的打印预览。现在,如果他取消或打印页面,标签应自动关闭。但它只在用户打开一个标签时才会发生。如果他通过单击“打印”按钮打开了多个选项卡,则当他取消打开的第一个选项卡时,所有打印预览选项卡都将关闭,如果取消第二个或第三个选项卡,则打印预览选项卡不会关闭直到他设法在第一个标签上取消打印。
例如:
infiniteScroll.html
<html>
<ul>
<li>
<a href="print.html" target="_blank">print</a>
</li>
<li>
<a href="print.html" target="_blank">print</a>
</li>
<li>
<a href="print.html" target="_blank">print</a>
</li></ul>
</html>
print.html
<html>
<body>
<p>sldfnksdfsdvncsjdnvjkndsc</p>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", printFunction);
function printFunction() {
//- setTimeout(function(){
//- LazyX.load();
var file_name = ("{{article['title']}}".replace(/[^0-9a-zA-Z_?: .]/g, ""));
document.title="Scroll - "+file_name;
window.print();
setTimeout(function(){window.close();}, 1);
//- }, 1);
}
</script>
</body>
</html>
此外,如果没有关闭打印预览标签,我的网站上的AJAX调用就不会发生。
有点同样的问题Stack Question
UPDATE /问题
打开打印预览的多个标签(按下单击全部3个打印),然后我无法自动关闭打印后关闭标签或取消第2个/第3个或第4个标签。但是,如果我打印或取消打印的第一个打开的标签,我可以自动关闭。
如果我打开多个打印预览标签,如果我取消或打印第一个标签,则所有标签都会关闭。
如果我在无限页面上的AJAX调用之前打开打印预览。然后我需要等待打印页面的完成或取消上面共享的打印preview.link。