解决safari浏览器使用window.open失效的问题
问题描述
在Safari浏览器中,由于安全机制的限制,window.open()
在回调函数中可能会失效。这是Safari浏览器为了防止页面滥用弹窗(如广告)而实施的安全策略。
现象分析
正常使用时:
1 | window.open(url, '_blank'); // 正常工作 |
回调函数中使用时:
1 | axios.get('xxxxxx').then((url) => { |
解决方案
1. 预先声明窗口对象
1 | let newWindow = window.open('', '_blank'); |
2. 使用超链接模拟点击
1 | axios.get('xxxxxx').then((url) => { |
3. 使用window.location
1 | axios.get('xxxxxx').then((url) => { |
总结
为解决Safari浏览器中window.open
在回调函数中的限制,我们可以:
- 提前创建窗口对象
- 使用DOM元素模拟点击
- 直接使用window.location跳转
选择合适的方案取决于具体的使用场景。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 !
评论