更換attachEvent
代替onunload
二傳手添加事件。我已經在IE6-8中測試過了,它工作正常。請確保您還使用addEventListener
爲IE9 +和其他瀏覽器:
var unloadFunc = function() { test(); };
if (childWindow) { // null if a pop-up blocker does not create the window
if (childWindow.addEventListener) {
childWindow.addEventListener('unload', unloadFunc, false);
} else {
childWindow.attachEvent('onunload', unloadFunc);
}
}
顯然,如果URL是從不同的領域,這將無法正常工作。
如果要在不同來源已關閉的窗口中執行某個功能,請使用setInterval
或setTimeout
輪詢布爾值屬性childWindow.closed
的值。當窗戶關閉時這是真的。
例如:
if (childWindow) { // null if a pop-up blocker does not create the window
setTimeout(function checkState() {
if (childWindow.closed) {
// onunload Logic here.
} else {
setTimeout(checkState, 250);
}
}, 250);
}
注:其他答案建議使用beforeunload
事件。請記住,specification允許實施在此事件期間忽略confirm
,alert
,prompt
和showModalDialog
調用。
工作..謝謝!!!但是你能解釋我嗎爲什麼我的代碼不工作...我只是添加了一個簡單的卸載事件到我創建的窗口。 – TRR 2012-08-03 12:29:19
@RutwikReddy IE忽略了二傳手 – 2012-08-03 12:40:16
你是我的英雄 – hanesjw 2013-01-16 19:05:34