Mozilla firefox无法使用window.onbeforeunload

我正在使用window.onbeforeunload在windows关闭时向用户显示一条消息,该function适用​​于chrome和IE但它不适用于Firefox,我使用的是firefox版本26.0我试过很多但没有意思,有人说这是firefox中的一个错误,就像在这篇文章和另一个建议一些解决方案,因为在这篇文章我尝试了所有可用的解决方案使用javascript和jquery但它不起作用,现在我显示一个确认对话框但浏览器默认对话框在它之后出现并且我对此不满意,我还试图阻止浏览器默认对话框出现使用preventDefault()但也没有意思!! 如果有任何解决这个问题的方法会很棒,这就是我如何使用window.onbeforeunload

  window.onbeforeunload = confirmWinClose(); function confirmWinClose() { var myVar ='${isFireFox}'; if(myVar=='true'){ return confirm(confirmExamClose); }else{ return confirmExamClose; } }  

注意: isFireFox是一个jsp变量,我曾经使用User-Agent Header知道浏览器的类型, confirmExamClose是我向用户显示的消息。

这是适用于Firefox和Chrome的解决方案。 我还没有在Safari和Opera中测试过。

 var myEvent = window.attachEvent || window.addEventListener; var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox var confirmationMessage = 'Are you sure to leave the page?'; (e || window.event).returnValue = confirmationMessage; return confirmationMessage; }); 

我在2天内找了一个Firefox onbeforeunload解决方案,没有运气,所以我努力工作,并用一个小技巧做到了。

在我的技巧中,用户需要至少点击一次浏览器窗口。 如果用户单击窗口然后单击后退按钮,刷新页面或尝试退出页面, onbeforeunload事件将触发,

 $(window).on('beforeunload', function () { return "Are you sure you want to exit this page?"; }); $(window).one('click',function(){ alert('hi'); $('.javavoid').trigger('click'); }); 
 .hide{display:none;} 
   asdf 

Welcome, click anywhere then click on back button or refresh page

使用MDN中给出的代码在firefox / chrome / IE11中为我工作(暂时没有尝试其他浏览器)。

 window.onbeforeunload = function (e) { var e = e || window.event; // For IE and Firefox if (e) { e.returnValue = 'Any string'; } // For Safari return 'Any string'; }; 

这是doc: Mdn window.onbeforeunload doc

你为什么在这里做浏览器嗅探? 代码的“Firefox”分支返回window.confirm的返回值,这是一个布尔值。 但是布尔值不可调用,因此将其分配给window.onbeforeunload与分配null相同。

您可能想要做的是删除浏览器嗅探,然后执行以下操作:

 window.onbeforeunload = confirmExamClose;