Firefox 4的onBeforeUnload自定义消息
在Firefox 3中 ,我能够编写一个自定义确认popup窗口:
window.onbeforeunload = function() { if (someCondition) { return 'Your stream will be turned off'; } }
现在在Firefox 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应该做的伎俩。