Edge浏览器中打开并关闭打印弹窗后关闭按钮失效问题
Edge浏览器:触发打印窗口后
window.close()失效的已知Bug 问题复现场景
- 页面配有Print和Close两个按钮,均使用
href="#"并绑定onclick事件 - 正常流程:未点击Print按钮时,Close按钮调用
window.close()可以正常关闭当前窗口 - Edge专属异常:点击Print按钮唤起Windows 10标准打印弹窗后,无论选择「取消」还是直接关闭打印窗口,后续点击Close按钮时,所有
window.close()相关写法都彻底失效
已验证无效的解决方案
我尝试了社区里常见的各种window.close()替代方案,包括但不限于:
// 阻止默认事件后执行关闭 (function(e){e.preventDefault(); window.close()})(event) // 通过event.view对象调用关闭 event.view.close(); event.view.top.close(); // 打开空白页后关闭当前窗口 window.open('','_self').close(); // 重新加载当前页后关闭 var ww = window.open(window.location, '_self'); ww.close();
同时也在Close按钮的点击事件末尾添加了event.preventDefault();来规避href="#"的默认跳转行为,但问题没有任何改善。
问题确认
这个问题是Edge浏览器的已知Bug,目前官方渠道已经有对应的问题反馈线程,和我们遇到的场景完全匹配。
当前建议
截至目前,官方还没有发布修复补丁,建议大家:
- 关注Edge浏览器的版本更新,等待官方修复;
- 若有紧急需求,可以尝试规避方案:比如单独新开一个窗口来触发打印操作,避免影响原窗口的
window.close()功能,但这种方式可能会降低用户体验; - 给用户做临时提示:如果需要关闭窗口,避免先触发打印操作。
内容的提问来源于stack exchange,提问作者sevdalin




