需求是,一个页面(父页面),跳转一个页面(子页面),操作点击事件,关闭子页面,刷新父页面的数据。
遇到的关键点
- 子页面中调用父页面的方法,这个方法必须是全局,不能是局部
1.第一种写法
在点击事件完成后,调window.close();
方法
$('auditbtn').click(function(){ //点击审核
isExamined = true;
window.close();
})
在script中监听页面的onunload事件
var isExamined = false; //是否操作了审核
if(GetQueryString('from') == 'childmonitor'){ //判断需要关闭的标识
window.onunload = function(){
var parentWin = window.opener;
if(parentWin && isExamined){
parentWin.searchAuditList()
}
}
}
这样的话,新的问题出现了
window.close();
在chrome,firefox等中有时候会不起作用。
只能用window.open("about:blank","_self").close();
替代,相当于子页面又做了跳转,监听不到onunload事件
终极解决办法
原来,还可以写一个全局的方法,在局部去调用
function _closeWindow(){
var parentWin = window.opener;
if(GetQueryString('from') == 'childmonitor' && parentWin){
parentWin.searchAuditList();
window.close();
window.open("about:blank","_self").close();
}
}
然后,直接在子页面的点击事件中调用。。。
完美!