一、发生拦截情景
当window.open()发生在事件内部或者加载的时候,不会发生拦截,但是放在异步ajax里或者异步代码里,就会发生拦截
二、解决办法
1.var tempWindow = window.open();
tempWindow.location.href = "url地址"
2.利用表单提交的方式
var 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 表单来模拟下载
3.直接写在a标签链接的onclick事件中
<a href="javascript:void(0)" onclick="window.open(url)"></a>
4.将window.open()延迟处理
setTimeout('window.open("url地址");', 1000);
网友评论