2015-07-19 72 views
0

我的問題不是關於如何覆蓋警報功能,然後按需要裝飾它。我的問題是,當你無視該警報的功能是這樣的:覆蓋原生Javascript提醒功能捕獲onbeforeunload警報

window.alert = function(str){console.log('alert is called: '+ str);}

對於一個頁面,註冊處理程序onbeforeunload事件是這樣的:

window.onbeforeunload= function(){return 'bye!';}
它應該在離開頁面之前彈出一個帶有字符串「bye」的警告框,並且可以使用自定義警報功能來捕獲它。但問題在於你的自定義提醒函數在這種情況下不會被調用。它看起來像瀏覽器正在調用另一個警報函數來把你的字符串放在那裏。我如何覆蓋該警報功能?

+1

瀏覽器沒有提供這樣做的方法。 – Pointy

+0

Firefox甚至會重寫用戶提供的字符串,是否有辦法至少爲onbeforeunload事件提取用戶的字符串? – Alex

回答

1

根據MSDN

備註當一個字符串被分配到 window.event的returnValue屬性,會出現一個對話框,讓用戶留 當前文檔,並保留字符串的選項被分配給它。 對話框中出現的默認語句「您確定要從此頁面導航 ?...按OK繼續,或 取消保留在當前頁面上」,無法刪除或更改。

這不是一個提醒,它是一個瀏覽器提供的確認框,我們不能改變它。請找到鏈接https://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx