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