ajax返回后开新页面被拦截

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

阅读 6.8k
7 个回答

可以试试在执行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标签的按钮,引导用户点击。也希望了解的朋友提出更正规的解决方法

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

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

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

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏