浏览器弹出窗口被拦截解决办法
看过很多解决这个办法的文章,但是对于ajax请求的弹出窗都没什么用,直到看到了这边文章才豁然开朗,其实是很简单的,下面是复制过来的文章。
window.open是javascript函数,该函数的作用是打开一个新窗口或这改变原来的窗口,不过一般用来的是打开新窗口,因为修改原来的网页地址,可以使用window.location,可以重定向网页地址,使网页跳转到另一个页面。
但是一般情况下,如果直接在js中调用window.open()函数去打开一个新窗口,浏览器会对弹出的窗口进行拦截,因为浏览器会把该窗口认为是弹出广告等用户不想得到的窗体,如果不想让浏览器拦截,解决的方法是把window.open()函数改为由用户主动点击时触发,这样浏览器就认为是用户想访问这个页面,而不是直接弹出给用户。
所以常用的方法就是在超链接里加入onclick事件,如
1
|
< a href="javascript:void(0)" onclick="window.open()"></ a > |
这样用户点击这个超链接,浏览器会认为它是打开一个新的链接,所以就不会拦截。
可是有时候会遇到想要弹出一个窗口,可是却是在onckick事件执行后,才去弹出来的,比如使用了$.JSON,点击获取数据后,再跳转到新页面,这时就会被浏览器拦截,我们可以通过下面的方法来避免,就是先用window.open打开一个窗口,然后修改该窗口地址。
如在$.JSON前面定义变量打开一个窗口,代码如下:
var tempwindow=window.open();
然后对$.JSON返回的地址使用以下代码使这个窗口跳转到指定网址,这样就会呈现弹出新窗口的效果了,而且不会被浏览器拦截。
1
|
tempwindow.location='/jump/new'; |
把上面跳转的地址改为$.JSON返回的变量或自己想要跳转到的网页。
转自:http://www.tuicool.com/articles/qaYzmey