首页 > ajax返回后开新页面被拦截

ajax返回后开新页面被拦截

ajax请求后返回成功后,开个新窗口被浏览器拦截。怎么解决浏览器拦截问题!


就是会拦截啊……你还能阻止浏览器么


浏览器会阻止脚本自动执行时候弹窗,你应该是脚本里直接用window.open了吧。
这样一般现在的浏览器都会默认阻止的。除非用户禁用了浏览器的阻止功能。

如果需要开新窗口功能,最好解决方式就是页面设置按钮或者链接,引导用户自己去点击触发弹窗。


可以试试在执行ajax前先打开一个空的标签页,然后在ajax返回内容后,再将空标签页重置为新的url。

// open a new blank tab
var createNewTab = window.open('about:blank', '_blank');
$.ajax({
    // ...
}).done(function(result) {
    if (result.status == 0) {
        var url = result.data.redirect;
        // async open a new tab
        setTimeout(function() {
            createNewTab.location.href = url;
        }, 100);
    } else {
        // close the blank tab
        createNewTab.close();
    }
});

没遇到过此类问题,不过如果是浏览器拦截的话,就是浏览器对js的权限不够,这类应该都是老式浏览器,你可以针对这类浏览器增加一个内嵌a标签的按钮,引导用户点击。也希望了解的朋友提出更正规的解决方法


楼上的是正解!!!先打开窗口再ajax


我也遇到过这种问题。有两种方法

  1. 把异步请求改为同步请求async:false

  2. 在异步请求回调函数中抛出一个事件,并把请求结果跑出去,在请求外面监听抛出的事件。监听到事件之后再打开窗口就好了


你要是能阻止浏览器拦截,浏览器做拦截有毛用啊??

【热门文章】
【热门文章】