【发布时间】:2017-04-19 17:06:48
【问题描述】:
如果打印预览打开超过几秒钟,我一直在努力解决 Chrome 断开 Websocket 连接的问题。我已经将其追溯到this ticket,原因是window.print() 是同步的,因此会停止任何其他脚本执行,这反过来又会使websocket 超时并丢弃。
自从 2.5 年前开票以来,它目前是 WontFix,我正在寻找一种解决方法。
我尝试过的
使用window.open
最初,我使用 iframe 来呈现内容并打印它。然后我尝试移动它以打开一个新标签,在那里加载内容并打印它。
window.open("iframe.html");
你可以找到一个最小的例子here(代码here)。如果您打开控制台,您会看到它每秒都在计数。 2 秒后,将打开一个弹出窗口(您可能需要启用弹出窗口),在新选项卡中加载打印。等待几秒钟,然后关闭打印预览。如果切换回原来的选项卡,可以看到计数器已停止。
使用锚
然后我尝试使用带有target="_blank" 的锚标记,如下所示:
<a href="iframe.html" target="_blank">print</a>
这会打开一个新标签,但计数器仍会停止。如果我右键单击该链接并使用Open link in new tab,那么计数器就会起作用。
是否有其他方法可以打开使用不同执行上下文的窗口?或者对不同的解决方法有什么想法?
【问题讨论】:
-
刚刚遇到了完全相同的问题!
标签: javascript google-chrome printing