2010-10-02 46 views
1

此代碼將在彈出窗口中打開go.com:如何知道什麼時候彈出在關閉JavaScript的

<a href="javascript:void(0)" onClick="javascript:window.open('http://go.com','','status=yes,scrollbars=yes,toolbar=no,menubar=no,location=no ,width=300px,height=300px')">open</a> 

,我想在主網頁,使用alert('closed!')當彈出窗口關閉,我不能編輯彈出頁面使用onunload="alert('closed!')",因爲彈出的網頁是外部的頁面,我不能改變像

var mywindow = window.open('http://go.com') ... 

感謝代碼。

回答

0

如何每隔1秒檢查窗口的狀態以查看它是否已關閉?示例代碼,沒有測試:

var mywindow= window.open(); 
checkmywindow(); 

function checkmywindow() 
{ 
    if(mywindow.closed) 
    { 
     //code when popup is closed 
    } 
    else 
    { 
     setTimeout("checkmywindow();", 1000); 
    } 
} 
1

怎麼樣,而不是直接加載外部頁面窗口,你打開「本地」窗口,包含外部頁面內容的iframe?通過這種方式,您仍然可以對實際窗口進行足夠的控制,以便能夠分辨何時關閉。

一些缺點:地址欄不會顯示他們正在瀏覽的URL,如果go.com有某種類型的框架破壞代碼,它也可能會中斷。

一些示例代碼:

function openIFrameInWindow(url) { 
    var myWindow = window.open(""); 

    var iframe = document.createElement("iframe"); 
    iframe.src = url; 

    myWindow.document.body.appendChild(iframe); 

    myWindow.document.body.onbeforeunload = function() { alert("WINDOW CLOSED") }; 
} 

<a href="javascript:void(0)" onClick="javascript:openIFrameInWindow('http://go.com')">open</a> 
+0

獲得在IE8中的appendChild線「沒有這樣的接口」的錯誤。 – paulwhit 2011-01-21 13:34:52

+0

這解決了我的問題。太糟糕了,這沒有被標記爲正確的... – 2014-11-15 05:27:59

0

當彈出窗口被關閉,你可以通過使用window.opener財產告知它的揭幕戰窗口。

所以:

//pseudocode in pop-up window 
onClose() { 
window.opener.popUpClosed = true; 
} 
在頁面打開後,您可以檢查popUpClosed變量的值彈出

現在。

更多的opener屬性在這裏: http://www.webreference.com/js/tutorial1/opener.html

+0

他沒有訪問窗口,因爲它是一個外部頁面。 – 2010-10-02 17:37:05

+0

opener屬性允許訪問打開窗口的頁面。這就是我認爲在 – Andreas 2010-10-02 22:25:19

+0

這個問題中描述的是的,但只有當你有權訪問正在打開的頁面時。我懷疑他有權修改go.com上的腳本。 – 2010-10-03 05:19:31

相關問題