如何绕过chrome的弹窗拦截机制

发布网友

我来回答

2个回答

懂视网

这次给大家带来ajax请求里面调用window.open被拦截如何处理,处理ajax请求里面调用window.open被拦截的注意事项有哪些,下面就是实战案例,一起来看一下。

该方法优点描述:比如ajax回调函数失败,浏览器默认打开的空链接会自动关闭,用户体验比较好。

 var newwin;
 $("#btn").click(function(){
 newwim = window.open();
 //此处调用ajax,异步即可:
 $.ajax({
  type:'POST',
  url: ajaxurl, 
  dataType : 'json',
  data:parameter, 
  beforeSend : function(){},
  success:function(data) {
  if(data.TSR_CODE == "0"){  
   newwin.location.href = xxx;//xxx为后端返回的地址;  
  }else{
   alert(data.TSR_MSG);
   newwin.close();//此处为ajax失败方法,自动关闭刚才会打开的页面;
  }
  },
  error:function(){
  console.log("访问出错,请重试!");
  },
  complete:function(){}
 });
 });
  • 第二种解决办法分析:

  • 此方法测试过:比如后台返回的是站址,谷歌浏览器、360浏览器等等会拦截请求,火狐、qq浏览器不会拦截,预测是浏览器自身对站址这种类型做了拦截,普通的网址不被拦截;

     $("#btn").click(function(){
     //此处调用ajax,异步即可:
     $.ajax({
      type:'POST',
      url: ajaxurl, 
      dataType : 'json',
      async:false,//改为同步请求
      data:parameter, 
      beforeSend : function(){},
      success:function(data) {
      if(data.TSR_CODE == "0"){  
       window.open(xxx);  
      }else{
       alert(data.TSR_MSG);   
      }
      },
      error:function(){
      console.log("访问出错,请重试!");
      },
      complete:function(){}
     });

    相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

    推荐阅读:

    JS中的JSON和Math使用案例分析

    PromiseA+的实现步骤详解

    热心网友

    在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的。举个例子:
    var btn = $('#btn');
    btn.click(function () {

    //不会被拦截
    window.open('http://cssha.com')
    });

    上面的代码中,window.open是用户触发的时候,是不会被拦截的,可以正常打开新窗口。再看下面这个:
    var btn = $('#btn');
    btn.click(function () {

    $.ajax({
    url: 'ooxx',
    success: function (url) {

    //会被拦截
    window.open(url);
    }
    })
    });

    上面的代码中,用户没有直接出发window.open,而是发出一个ajax请求,window.open方法被放在了ajax的回调函数里,这样的情况是会被拦截的。
    那么,当用户点击按钮,发出ajax请求,如何在ajax请求完成后再打开新窗口,又不被拦截呢? 接着往下看:
    var btn = $('#btn');
    btn.click(function () {

    //打开一个不被拦截的新窗口
    var newWindow = window.open();

    $.ajax({
    url: 'ooxx',
    success: function (url) {

    //修改新窗口的url
    newWindow.location.href = url;
    }
    })
    });

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com