如果想要弹出窗口而不被阻止, 必须是用户点击之后使用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);
};