一、window.open关闭子页面时刷新父页面
window.opener.location.reload();
window.opener=null;window.close();
二、AJAX返回后window.open不被阻挡
1.可以把异步变同步async: false
2.异步下处理方法
var newwindow=window.open("about:blank"); window.focus(); $.ajax({ url:form.attr('action'), data:form.serialize(), dataType: 'json', }).done(function(o){ if(o.success){ if(o.data){ newwindow.location.href="http://www.zgxrw.com"; newwindow.focus(); }else{ newwindow.close(); } }else{ newwindow.close(); } }).fail(function(){newwindow.close();});
但是这种方法带来一个问题,就是当失败后,会先打开一个窗口,然后再关闭,虽然一闪而过,但是对用户总是一个困扰,相对来说还不如将ajax改成同步,毕竟现在的互联网的访问速度,不至于会将浏览器锁住太长时间。
或者
方法1:
<input type="button" class="preview" value="预览"/>
$('.preview').live('click', function(){
var w = window.open();//发请求之前打开一个空页面
$.ajax({..., success:function(msg){
setTimeout(function(){w.location='http://www.baidu.com';}, 0);//0秒后给新窗口的localtion赋值
}});
});
方法2:
<input type="button" value="预览" onclick="if(preview()){window.open('http://www.baidu.com');}"/>
function preview(){
var bol = false;
$.ajax({async:false,...,success:function(msg){
if (msg == 1) {
bol = true;
} else {
bol = false;
}
}});
return bol;
}