问题: 从页面 A 我有一个到页面 B 的链接,在页面 B 上它在加载时调用 window.print() ,这会打开打印预览模式。我的问题是在页面 A 上,是否有一种简单的方法可以知道页面 B 上的打印预览模式当前是否打开? (我只需要它在 Chrome 上工作)
背景: 我需要完成这项工作的原因是,当 Google Chrome 有一个打开了打印预览模式的子页面时,它会阻止父页面的 Ajax 调用。 相关问题:
Chrome browser unable to make a server call when print preview is opened
Google Chrome blocks ajax requests when print preview is opened on child window
https://code.google.com/p/chromium/issues/detail?id=139706
没有简单的方法可以完全解决这个问题,所以我只想知道打印预览模式是否打开,并警告用户在页面 A 上继续之前关闭页面 B 上的打印模式。
最佳答案
这看起来不可能。 Chrome 不仅会阻止 ajax 执行,还会停止处理页面 A 上的所有脚本。
我认为最好的办法是在页面 B 上提供说明,以便用户打印该页面。任何 Javascript 启动的打印都会暂停页面 A 上的 Javascript 执行。
一个可能的解决方案是在打开页面 B 之前在页面 A 上显示一条消息,以应对这种行为。
编辑:从下面的评论中提取信息
经过进一步思考,最好的解决方案是:在页面 B 上,在调用 window.print() 的脚本中,就在调用 print 之前,将信息发送回页面 A,传达这将要发生,所以该页面 A 可能会采取适当的操作。
关于javascript - 如何检测子页面中打开的打印预览模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31057909/