JS打开链接被浏览器拦截解决方法
为了维护用户安全和使用体验,某些浏览器禁止直接使用JS中的window.open(url)打开新链接,一般window.open(url,“ _self”)更改当前窗口可以生效。
使用以下变通方法可解决:
- 表单提交的方式
1
2
3
4
5
6var form = document.createElement('form');
form.action = 'www.baidu.com?id=1';
form.target = '_blank';
form.method = 'POST';
document.body.appendChild(form);
form.submit();这种方式,如果需要传递参数,则需要使用POST方法,默认的GET方法无法传递参数。 也就是说,新页面的URL中没有参数部分。另外,Ajax在下载文件时也是用form表单来模拟下载。
- 直接将打开窗口操作放在按钮/链接的onclick事件中
1<a href="javascript:void(0)" onclick="window.open(url)"></a>
- 延迟这个打开操作
1setTimeout('window.open(url);', 500); // 延迟时间不能太短 否则也会被拦截
- 通过JS打开新窗口会被拦截,换一种实现方式
1
2var tempwindow=window.open('_blank'); // 先打开页面
tempwindow.location='http://www.baidu.com'; // 后更改页面地址