Firefox 4的onBeforeUnload自定义消息

在Firefox 3中 ,我能够编写一个自定义确认popup窗口:

window.onbeforeunload = function() { if (someCondition) { return 'Your stream will be turned off'; } } 

现在在Firefox 4中 ,它不显示我的自定义消息。 它提供的默认消息甚至不准确我的应用程序。

火狐4确认

这个默认的消息可以被覆盖吗?

来自MDN :

请注意,在Firefox 4及更高版本中,返回的string不会显示给用户。 参见错误588292 。

这个“Bug”实际上是一个(imho可疑的)特性..所以在Firefox 4中没有办法显示这个消息。如果你认为它应该被改变,那么对这个bug进行评论,这样Firefox开发者就会知道人们真正想要能够显示一个自定义的string。

除了上述答案,我已经改进了解决方法。

我在这里使用jQuery。 你也可以使用默认的javascriptfunction。

 $(window).bind('beforeunload', function() { if(/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) { if(confirm("Are you Sure do you want to leave?")) { history.go(); } else { window.setTimeout(function() { window.stop(); }, 1); } } else { return "Are you Sure do you want to leave?"; } }); 

testing和工作在Firefox 11以及。 🙂

我的解决方法是在onbeforeunload中显示警报:

 window.onbeforeunload=function() { if ( /Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) { alert("Blah blah. You have to confirm you are leaving this page in the next dialogue."); } return "Blah blah."; } 

(它显示了Firefox中的两个对话,其他地方有一个对话。)

尝试用确认消息来实现它,

 window.onbeforeunload=function(){ return confirm("Are you sure??"); } 

当然,当用户确认那么FF4消息被显示,所以你可能更好地显示这个login/访问每个站点一次。 一个cookie应该做的伎俩。