2010-04-06 98 views
11

這已經/可能已經問過,但是,據我記得以前窗口/標籤關閉事件,問題是不能令人滿意的,在那個時候^^的Javascript註冊窗口/標籤關閉

回答我怎樣才能用Javascript註冊一個窗口或選項卡關閉事件?我已經嘗試過body.onclose和body.onunload,以及其他幾十個我自己製作的名字,並認爲它們可能存在,但它們都不起作用,或者如果它真的存在,它只會在之後觸發窗口或選項卡已關閉。

問: 有任何窗口或標籤之前註冊此類事件方式已經關閉?它甚至不需要與所有瀏覽器兼容,只要它與Firefox兼容即可。

+0

可能重複的[關閉選項卡之前確認框](http://stackoverflow.com/questions/2452963/confirm-box-before-closing-a-tab) – 2014-07-10 21:40:45

+0

@CiroSantilli:不,它不是。那另一個問題是關於正確使用'onbeforeunload'的問題 – Bergi 2014-07-11 00:44:23

回答

1

我們沒有Onclose,但我們有OnbeforeUnload。即使我正在尋找同樣的事件,但沒有運氣。

8
window.onbeforeunload = function (e) { 
    var e = e || window.event; 

    // For IE and Firefox 
    if (e) { 
    e.returnValue = 'Any string'; 
    } 

    // For Safari 
    return 'Any string'; 
}; 
0

卸載和beforeUnload對「頁面緩存」(又稱「背向前緩存」)的負面影響。這是一個特殊的緩存,當您離開頁面時會保留一些額外的狀態,以便在導航「返回」(或取消關閉標籤)時可以無縫地重新調整它的狀態。如果您曾經想知道爲什麼某些表單字段在您點擊時會保留其內容,有些則不會 - 這通常是原因的一部分。

您應該看看FirefoxWebKit中的「pageshow」和「pagehide」事件。 IE沒有相應的頁面緩存,所以在那個環境下,你可以在/卸載之前使用它。儘管Opera's early concerns,pageshow和pagehide使其成爲HTML5 Spec