打印预览冻结Chrome中的Javascript
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打印预览冻结Chrome中的Javascript相关的知识,希望对你有一定的参考价值。
如果打印预览打开超过几秒钟,我一直在努力让Chrome放弃Websocket连接。我已将其追溯到this ticket,原因是window.print()
是同步的,因此停止任何其他脚本执行,这反过来使websocket超时并丢弃。
由于机票在2。5年前开放,目前是WontFix,我正在寻找解决方法。
我试过的
Use window.open
最初,我使用Iframe渲染内容并打印出来。然后我试图移动它以打开一个新标签,在那里加载内容并打印它。
window.open("iframe.html");
你可以找到一个最小的例子here(代码here)。如果你打开控制台,你会发现它每秒都在计算。 2秒后,将打开一个弹出窗口(您可能需要启用弹出窗口),以在新选项卡中加载打印件。等待几秒钟,然后关闭打印预览。如果切换回原始选项卡,则可以看到计数器已停止。
Use an anchor
然后我尝试使用target="_blank"
的锚标签,如下所示:
<a href="iframe.html" target="_blank">print</a>
这将打开一个新选项卡,但计数器仍然停止。如果我右键单击链接并使用Open link in new tab
,则计数器有效。
是否有其他方法可以打开使用不同执行上下文的窗口?或任何不同的解决方法的想法?
如果问题是新打开的窗口/选项卡的打印预览阻止主选项卡,则找到解决方法:
<a href="xxxx" target="blank_" rel="noopener" />.
诀窍是noopener。如果您不必从新打开的窗口的javascript访问原始窗口,并且在新窗口上阻止JS不是问题,则添加此属性可在Chrome中使用。
以上是关于打印预览冻结Chrome中的Javascript的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 和 Mozilla Firefox 中的不同打印预览
JavaScript 更新 textarea 冻结 Chrome,但不冻结 Firefox