为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇潇雨雨 2022-11-03 10:31:21
在我的 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 但它不工作。任何帮助将不胜感激。谢谢
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

根据MDN,“在大多数浏览器中,此方法将在打印对话框打开时阻止”。换句话说,在用户完成与该元素的交互之前,调用print()将阻塞该线程(就像您调用了一样)。alert()

这是设计使然,因此可能没有任何解决方法。我链接的页面确实注意到最近版本的 Safari 立即返回,这意味着父级不会像您描述的那样冻结,但这是特定于浏览器的。


查看完整回答
反对 回复 2022-11-03
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信