当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到ajax或者一段异步代码内部,马上就出现被拦截的表现了。
原因分析
当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。因为浏览器认为这不是一个用户希望看到的页面。
// 直接打开页面window.open(‘//www.baidu.com‘, ‘_blank‘);
解决办法
function windowOpen(url, id) {var a = document.createElement(‘a‘);a.setAttribute(‘href‘, url);a.setAttribute(‘target‘, ‘_blank‘);a.setAttribute(‘id‘, id);// 防止反复添加if(!document.getElementById(id)) {document.body.appendChild(a);}a.click();}
