在Chrome的安全机制里,非用户直接触发的window.open方法,是会被拦截的。这是由于浏览器为了维护用户安全和体验,禁止在js中直接使用window.open(url)来打开新的链接(window.open(url,”_self”)改变当前的窗口是可以生效的)。
windowopen被拦截的解决方法
1.表单提交的方式
varform=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表单来模拟下载。
2.直接将打开窗口操作放在按钮/链接的onclick事件中
3.延迟这个打开操作
setTimeout('window.open(url);',500);//延迟时间不能太短否则也会被拦截
windowopen被拦截换方式
通过js打开新窗口会被拦截,换一种实现方式
vartempwindow=window.open('_blank');//先打开页面
tempwindow.location='http://www.baidu.com';//后更改页面地址