终结:Ajax请求响应中用window.open打开新窗口被拦截的解决方法

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了终结:Ajax请求响应中用window.open打开新窗口被拦截的解决方法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
原答案:https://stackoverflow.com/questions/10223388/window-open-works-different-on-ajax-success// Direct window.open()//我们常见用法
$('#btnDirect').on('click',function(){
    window.open('http://google.com')
})
var success = false;  //NOTE THIS

// AJAX window.open()
$('#btnAJAX').on("click", function(){
    $.ajax({
      url: "/user/login/",
      context: document.body,
      async:false,   //NOTE THIS
      success: function(){  //THIS ALSO CHANGED
         success = true
      }
    });
    if(success){ //AND THIS CHANGED
      window.open('http://google.com')
    }
})这里有几个重点:1.Ajax需要设置为同步方法async:false2.window.open需要放到Ajax方法外部,这样浏览器认为window.open是由用户触发而不是服务器主动打开的,Ajax方法内只设置参数

脚本宝典总结

以上是脚本宝典为你收集整理的终结:Ajax请求响应中用window.open打开新窗口被拦截的解决方法全部内容,希望文章能够帮你解决终结:Ajax请求响应中用window.open打开新窗口被拦截的解决方法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: