需求是,一個頁面(父頁面),跳轉一個頁面(子頁面),操作點擊事件,關閉子頁面,刷新父頁面的數據。
遇到的關鍵點
- 子頁面中調用父頁面的方法,這個方法必須是全局,不能是局部
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();
}
}
然後,直接在子頁面的點擊事件中調用。。。
完美!