window open被阻止 解决

本文探讨了在JavaScript中如何通过点击后立即弹出一个空白窗口,并在异步处理完成后设置目标路径,以避免弹窗被阻止的情况。通过实例展示了如何使用`window.open`和`dojo.xhrGet`结合实现这一功能。

  如果想要弹出窗口而不被阻止, 必须是用户点击之后使用window.open方可, 但是如果点击后有异步处理操作, 而且是在操作成功后再弹出, 那么这个新窗口就会被阻止了。

    所以为了变通处理, 点击后就弹出一个空白的新窗口, 然后异步处理结束后再设定目标路径即可。
如:

tempFunc=function(){
      var item=prodGrid.getItem(0);
      if(!item)return;
      var orderItemId=prodStore.getValue(prodGrid.getItem(0),'purchaseOrderItemId');
      var p=window.open('about:blank');
      var xhrArgs = {
                 url: "buyFromPreparation.action?orderItemId="+orderItemId,
                    load: function(data){
         prodStore.save();
         prodStore.url='getPpi.action?currentCategory1='+currentCategory1;
         prodStore.close();
         prodGrid._refresh();
         if(!p)alert("弹出的订单处理窗口被阻止了,请手动设置允许此窗口被打开。");
         p.location='checkOrder.action?orderId='+data;         
        },
                    error: function(error) {alert(error);}
             };      
      var d= dojo.xhrGet(xhrArgs);
     };


转载于:https://my.oschina.net/neo600/blog/51579

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值