window.open(url)打开链接被浏览器拦截解决方案
浏览器为了维护用户安全和体验,禁止在JS中直接使用window.open(url)来打开新的链接(window.open(url,”_self”)改变当前的窗口是可以生效的)。下面采用几种变通方法解决:
1.表单提交的方式
var form = document.createElement('form');
form.action = 'www.baidu.com?id=1';
form.target = '_blank';
form.method = 'POST';
document.body.appendChild(form);
form.submit();
1
2
3
4
5
6
7
8
这种方式,如果需要传递参数时,需要使用 POST 方法, 默认的 GET 方法无法传递参数。也就是新页面的url中没有参数部分。
另外,Ajax下载文件时也是用form 表单来模拟下载。
2.直接将打开窗口操作放在按钮/链接的onclick事件中
如:
<a href="javascript:void(0)" onclick="window.open(url)"></a>
1
3.延迟这个打开操作
如:
setTimeout('window.open(url);', 500); // 延迟时间不能太短 否则也会被拦截
1
4.通过JS打开新窗口会被拦截,换一种实现方式
var tempwindow=window.open('_blank'); // 先打开页面
tempwindow.location='http://www.baidu.com'; // 后更改页面地址
1
2
参考window.open打开新窗口被浏览器拦截的处理方法
————————————————
版权声明:本文为CSDN博主「yypsober」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yypsober/article/details/79487217
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!