2010-07-06 102 views
2

我有一個父頁面和子頁面。在新選項卡中打開子頁面如何檢測窗口(新選項卡)關閉事件?

我想顯示一條警告消息(子頁面正在關閉)當我關閉子選項卡時。
如何在關閉選項卡時顯示關閉messgae? (不刷新時間)

我用onunloadonbeforeunload
當頁面刷新和製表符關閉時,也調用兩種方法。

window.onunload = function doUnload(e) 
{ 
    alert('Child window is closing...'); 
} 

window.onbeforeunload = function doUnload(e) 
{ 
    alert('Child window is closing...'); 
} 

我必須顯示警告消息,只有關閉標籤在瀏覽器中。

幫幫我。 在此先感謝。

更新

我使用下面的腳本。它在IE中工作。但在FireFox中沒有工作

<script language="javascript" type="text/javascript">   

    window.onbeforeunload = function() 
    { 
     if ((window.event.clientX < 0) || (window.event.clientY < 0) || (window.event.clientX < -80)) 
    {    
      alert("Child window is closing..."); 
    } 
}; 

</script> 

如何在FireFox和其他瀏覽器中實現此功能。

回答

0

Mozilla Devloper site中有一個例子,基本上說檢查瀏覽器類型 ,並相應地使用下面的檢查。希望這有助於。

1

這裏有一個afaik從來不是一個跨瀏覽器腳本。解決方案是不依賴特定瀏覽器的未記錄和可更改的功能來檢測重要的內容。

由於您有一個CHILD頁面,您可以在父(開啓者)中設置一個測試,以間隔測試childWindowHandle.closed屬性並對其執行操作。

1

http://chrismckee.co.uk/good-sir-before-you-unload-crossbrowser-javascript-headaches/的腳本是否有效?

假設你只是想激發beforeunload事件跨瀏覽器,這幾乎做它(不包括戲曲)

try{ 
    // http://www.opera.com/support/kb/view/827/ 
    opera.setOverrideHistoryNavigationMode('compatible'); 
    history.navigationMode = 'compatible'; 
}catch(e){} 

//Our Where The F' Are You Going Message 
function ReturnMessage() 
{ 
    return "WTF!!!"; 
} 

//UnBind Function 
function UnBindWindow() 
{ 
    window.onbeforeunload = null; 
    return true; 
} 

//Bind Links we dont want to affect 
document.getElementById('homebtn').onclick = UnBindWindow; 
document.getElementById('googlebtn').onclick = UnBindWindow; 

//Bind Exit Message Dialogue 
window.onbeforeunload = ReturnMessage; 
0

您可能無法做到這一點比一些基於cookie的方法,這是發展的變通像其他非永久性Cookie。第二個標識頁面刷新,基於窗體的重定向,或者重新導向或瀏覽器關閉卸載事件標識不直接且繁瑣。建議不要依賴於它。

在客戶關閉標籤之前,您可以做一些小事情。 javascript detect browser close tab/close browser但如果您的動作列表很大並且選項卡在完成之前關閉,則您很無奈。你可以嘗試一下,但憑藉我的經驗不依賴於它。是的,你現在不能在這個時候區分和刷新和關閉。所以沒有一個萬無一失的方式來說明孩子是否已經關門了。

window.addEventListener("beforeunload", function (e) { 
    var confirmationMessage = "\o/"; 
    /* Do you small action code here */ 
    (e || window.event).returnValue = confirmationMessage; //Gecko + IE 
    return confirmationMessage;       //Webkit, Safari, Chrome 
}); 

https://developer.mozilla.org/en-US/docs/Web/Reference/Events/beforeunload?redirectlocale=en-US&redirectslug=DOM/Mozilla_event_reference/beforeunload