2013-02-08 30 views
2

我想知道是否可以更改window.beforeunload消息。在互聯網上所有的例子都與此類似:改變window.beforeunload消息

$(window).bind('beforeunload', function() { 
    return 'You have unsaved changes. If you leave the page these changes will be lost.'; 
}); 

這很酷,和谷歌瀏覽器會顯示我的消息,但在Firefox中顯示默認的消息。我如何欺騙Firefox來顯示我的消息,而不是默認消息?

+1

Firefox(版本4+)不再支持'onbeforeunload'上的自定義消息。 https://bugzilla.mozilla.org/show_bug.cgi?id=588292 – 2013-02-08 15:45:11

+1

@RocketHazmat你可能想添加一個答案。對於點和什麼。 **更新:**我看到你有50k點,你可能已經知道這是如何工作的。漠視。 – Felix 2013-02-08 15:57:34

+0

@Felix:有時當答案只是「你不能」或「它是如何工作的」時,我不想輸入整個答案:-P唉,無論如何我都添加了一個答案:-) – 2013-02-08 16:15:57

回答

6

onbeforeunload是一個奇怪的事件。瀏覽器一直在討論如何處理它。

  • IE和Chrome會在對話框中顯示您的消息以及他們自己的消息。
  • Firefox用於顯示您的消息,但在版本4+中,他們停止支持自定義消息。看到這個:https://bugzilla.mozilla.org/show_bug.cgi?id=588292
  • Opera甚至不支持onbeforeunload方法!

這種方法尚在討論之中,因爲它可以用於,而且還因爲它可以混淆/惹惱用戶。 Scammy,帶有病毒的網站可以用這樣的消息:

「離開該頁面將意味着您的計算機可能仍然被感染,請留下來安裝我們的病毒掃描程序」

如今,網站可以使用AJAX/localStorage來保存更改,所以這個事件並不是真的需要。

+0

但有時使用該事件很重要,假設您在添加新產品的頁面中有10個超鏈接,並且在添加忘記的產品保存你的工作,點擊其中的一些超鏈接,並假設添加產品表單包含如此多的輸入來填充不應該警告用戶,等待停止你可能會失去你的工作? – Sora 2013-02-09 07:52:22

+0

@Sora:是的,我只是指出它可以*用於「其他」目的。此外,並非所有瀏覽器甚至支持該事件。您可以使用AJAX在您鍵入時保存它,因此在您離開時不會丟失任何內容。如果你想使用這個事件,那就去做吧,只要知道每個瀏覽器都以不同的方式對待它。 – 2013-02-09 14:57:00