在子窗口上打开打印预览模式时,Google Chrome会阻止ajax请求(如何解决?)
问题:
在子窗口上打开打印预览模式时,Google Chrome会阻止ajax请求
细节:
我有一个网页 – ParentPage.html,其中包含指向子页面的链接 – PrintPage.html
a href="PrintPage.html" target="_blank"
然后在我的PrintPage.html上我有调用window.print()
JavaScript
$(document).ready(function() { window.print(); }
如果用户在不关闭PrintPage.html上的打印模式的情况下转到ParentPage.html并单击某个触发Ajax调用的按钮,则会阻止它们直到关闭打印模式。
这应该是Google Chrome的一个已知问题,其他浏览器(IE,Firefox)也有类似的问题,但它们不会成为问题,因为它们根本不允许用户导航到当前打开的打印页面以外的其他选项卡。
我在这里找到了相关问题,但没有解决方案:
打开打印预览时,Chrome浏览器无法拨打服务器电话
在子窗口上打开打印预览时,Google Chrome会阻止ajax请求
最好不要阻止父窗口的Ajax。 我觉得这可能是因为并非所有选项卡的Ajax调用都被阻止,只有这个父窗口。 因此,如果有一种方法可以使子页面 – PrintPage.html不是ParentPage.html的子页面,那将是有效的。
当我检测到用户点击ParentPage.html时,一种不太理想的方法是关闭PrintPage.html上的打印模式。 然后在PrintPage.html聚焦时重新打开打印模式。 重新打开模态部分很简单,但我不知道如何从不同的选项卡关闭打印模式。
如果以上两种方法不起作用,我想我必须在打开打印模式并且用户试图在ParentPage.html上单击ajax调用按钮时显示警告。 检测是否从ParentPage.html打开打印模式可能也不容易。
任何帮助,将不胜感激!