这是浏览器机制的问题,当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到ajax或者一段异步代码内部,马上就出现被拦截的表现了。所以你要实现js打开一个页面可以换一个写法,比如你可以新建一个a标签, href为你要打开的页面,然后再触发其click方法去模拟window.open。
打开新页面的方法,主要有一下几种:
第一种:a标签 '<a href="test.php"target="_blank">,target="_blank"为打开一个新的窗口,否则,为当前页面跳转到指定页面;
第二种:form表单'<form action="drag.html" method="get" id="form" target="_blank"/></form>',提交表单即可打开新页面,target='target',则将表单信息提交至新打开的指定页面,否则当前页面跳转到指定页面;
第三种:window.location 执行window.location='test.php',页面将跳转到指定页面。
第四种:window.open(url);执行window.open('test.php'),将会打开心新的指定页面,当前页面不变。
这个我在网上也能查到,有没有别的方法
换个方法吧
现在火狐浏览器拦截太吊了,除非是用户点击触发的js或者form表单回车提交触发submit事件。。。
模拟点击事件+a标签吧O(∩_∩)O哈哈~
<a href="javascript:void(0);" onclick="window.open('http://www.baidu.com','_blank');" target="_blank">百度_blank_click</a>这种方式就不会被拦截