2009-04-23 51 views

回答

13

不能直接通知窗口關閉,但可以通過檢查由window.open()返回的窗口對象引用上的closed屬性來確定子窗口何時關閉。

下面是將顯示由輪詢被關閉子窗口的5秒內警報的closed屬性的示例:

var win = open('http://www.google.com'); 
var intervalId = setInterval(function() { 
     if (win.closed) { 
      clearInterval(intervalId); 
      alert('Window closed! Hoorah!'); 
     } 
    }, 5000); 
+0

你不能直接通知因爲子窗口在單獨的域中,對嗎? – Adam 2010-09-07 14:58:24

+0

這是因爲在關閉窗口時沒有合適的瀏覽器事件可用於解決問題。 – 2010-09-08 03:22:15

+0

Woow.great男人..像一個魅力工作。非常感謝 – BKM 2013-10-25 05:58:19

-1

用的代碼 1 /兩片,在彈出一個更好的解決:

$(window).bind('unload', 
    function(){ 
    window.opener.PopupUnload(window) 
    }) 

2 /在父(主窗口):

function PopupUnload(wnd){ 
setTimeout(function(){ // setTimeout is for IE 
    if(wnd.closed) 
    alert('You just killed me...') 
    },10) 
} 

與此代碼,沒有永遠叫(在使用setInterval())功能,你盡收並刷新彈出(POST/GET)

(在IE8和FF3測試)之間的差異

+1

如果父窗口和彈出窗口從不同的窗口加載,則您的'window.opener.PopupUnload'調用將失敗由於跨站點腳本限制導致的域名。 – 2010-09-08 03:25:41