基于此处的一些非常有用的回复(如this),我构建了一些代码来处理在其他浏览器(如Chrome)上运行良好但在Safari上运行良好的弹出窗口阻止 - 加载器和目标页面只是示例,它们将是内部文档在生产版本中:
//redirecting user to a temporary page displaying some loader
test=window.open('https://codepen.io/jackrugile/full/ejsbf/', '_blank');
//setTimeout to simulate some API call
setTimeout(function() {
//this part does not work on Safari to change the new page to target page
test.location.replace('http://google.com');
}, 3000)
我很清楚弹出窗口是邪恶的,它们被阻止是有原因的,但考虑到我正在开发一种工具,只能在给定的公司环境中访问和使用,弹出窗口是公司本身的要求,不,我们正在讨论太多的设备和技术能力太少的人,无法考虑为我们自己的应用程序禁用拦截器。
如果有可能的话,有什么技巧可以让它在 Safari 上运行吗?我可能会考虑删除该window.open()
部分,但我们需要进行可靠的检查以验证文档是否已成功打开。