2009-08-17 69 views
52

當我試圖關閉我的Google文檔選項卡時未保存的更改時,這是我在瀏覽器中獲得的內容(FF 3.5)。從網頁導航時發出提醒

您確定要離開此頁面, ?

您在此 文檔中有未保存的更改。點擊取消立即,然後 '保存'來保存它們。點擊確定立即 丟棄它們。

按OK繼續,或取消至 停留在當前頁面。

我的問題是這些警報是否是網絡應用程序的一部分(例如gdocs),還是由瀏覽器發出?如果是後者,這是如何完成的?

回答

83

通過瀏覽器。這是beforeunload事件處理程序,它返回對話框的自定義文本,該文本只是三個段落的中間部分 - 其他兩個段落以及按鈕的文本不能自定義或以其他方式更改。

window.onbeforeunload = function(){ return 'Testing...' } 

// OR 

var unloadListener = function(){ return 'Testing...' }; 
window.addEventListener('beforeunload', unloadListener); 

將產生一個對話框,說

Are you sure you want to navigate away from this page? 

Testing... 

Press OK to continue, or Cancel to stay on the current page. 

您可以通過設置處理器爲null

window.onbeforeunload = null; 

// OR 

window.removeEventListener('beforeunload', unloadListener); 
+0

感謝彼得。我研究了現代瀏覽器如何處理onbeforeunload事件併發布了我的發現。請添加您知道的任何其他複雜細節。 – 2009-08-21 17:39:52

+0

嗨,彼得,難道我們無法利用事件產生自定義警報,它提供與本機窗口警報相同的功能嗎? – SexyBeast 2013-09-10 19:51:30

+0

不是我知道的,沒有。 – 2013-09-10 21:48:23

-11

警報是Web應用程序的一部分。查看源代碼並查看javascript。

+1

尋找 「onBeforeUnload」 抵消這一點。 – 2009-08-17 17:16:37

+0

至少,我無法在Google文檔來源中看到它。 – 2009-08-17 17:22:08

+0

它可能隱藏在一些不明顯的JavaScript文件中。 Google使用的腳本使其JavaScript文件基本上不可讀取給人類。 – ceejayoz 2009-08-17 17:31:41