使用window.open()方法打开新页面,被浏览器拦截问题

当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到一段异步代码内部,马上就出现被拦截的表现了

当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。因为浏览器认为这可能是一个广告,不是一个用户希望看到的页面。

解决方案一:

  1. function newWin(url, id) {  
  2.               var a = document.createElement(‘a‘);  
  3.               a.setAttribute(‘href‘, url);  
  4.               a.setAttribute(‘target‘, ‘_blank‘);  
  5.               a.setAttribute(‘id‘, id);  
  6.               // 防止反复添加  
  7.               if(!document.getElementById(id)) {                       
  8.                   document.body.appendChild(a);  
  9.               }  
  10.               a.click();  
  11.   } 

这种方案不适用与异步代码中。

解决方案二:

let newWindow = window.open("about:blank","_blank");

  1. $.ajax({  
  2.         type: "post",  
  3.         url: "/xxxx/xxxx",  
  4.         data: {"param": param},  
  5.         error: function (data) {  
  6.             showError(data);  
  7.         },  
  8.         success: function (data) {  
  9.             if (data.errorFlag == 0) {  
  10.                 // 新加  
  11.                 newTab.location.href = "www.baidu.com";  
  12.             } else {  
  13.                 layer.alert(data.desc, {icon: 2, title: '提示信息'})  
  14.             }  
  15.         }  
  16.     }); 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值