在新选项卡中打开打印屏幕(window.print)会冻结 Chrome 的父窗口

在我的 React 组件中,我有一个点击打印按钮,我正在调用一个函数来在新选项卡中打开打印对话框。


打印功能的代码是:


var winPrint = window.open('', '',)

winPrint.document.write('<html><head><title></title></head><body>Some text</body></html>')

winPrint.document.close()

winPrint.focus()

winPrint.print()

winPrint.close()

现在,当这在新选项卡中打开一个打印对话框时,如果用户没有对打印对话框执行任何操作,那么我的父级也会被冻结。如果我们关闭打印对话框,那么我的父窗口也会激活。


所以,我想让我的父窗口始终处于活动状态,无论用户是否对打印对话框采取任何操作。


我也试过 rel="noopener" 与 window.open 但它不工作。任何帮助将不胜感激。


谢谢


潇潇雨雨
浏览 70回答 1
1回答

墨色风雨

根据MDN,“在大多数浏览器中,此方法将在打印对话框打开时阻止”。换句话说,在用户完成与该元素的交互之前,调用print()将阻塞该线程(就像您调用了一样)。alert()这是设计使然,因此可能没有任何解决方法。我链接的页面确实注意到最近版本的 Safari 立即返回,这意味着父级不会像您描述的那样冻结,但这是特定于浏览器的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript