Mozilla firefox not working with window.onbeforeunload
Solution 1
Here is working solution for Firefox and Chrome. I haven't yet tested in Safari and 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;
});
Solution 2
I looked for a Firefox onbeforeunload
solution over 2 days and with no luck, so I worked hard on this, and did it with a little trick.
In my trick, the user needs to click on the browser window at least once.
If the user clicks on the window and then clicks on the back button, refreshes the page, or tries to exit the page, onbeforeunload
events will fire,
$(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;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<a class="hide javavoid" href="javascript:void(0)">asdf</a>
<p>Welcome, click anywhere then click on back button or refresh page</p>
</body>
Solution 3
Using the code given in the MDN works for me in firefox/chrome/IE11 (haven't try other browser for now).
window.onbeforeunload = function (e) {
var e = e || window.event;
// For IE and Firefox
if (e) {
e.returnValue = 'Any string';
}
// For Safari
return 'Any string';
};
here is the doc : Mdn window.onbeforeunload doc
Eslam Hamdy
Senior engineer with +9 years experience in java ecosystem, have one plus year experience in crafting and managing agile teams, has a passion for nature, mountain biking, swimming, traveling, tensegrity and coding.
Updated on February 18, 2020Comments
-
Eslam Hamdy about 4 years
I'm using
window.onbeforeunload
to display a message to the user on windows close, the function works well with Chrome and IE but it doesn't work with Firefox, I'm using Firefox version26.0
I have tried many but with no mean, somebody said that its a bug in Firefox as in this post and another suggests some solutions as in this post I tried all the solutions available using Javascript and jQuery but it doesn't work, now I display a confirm dialog but the browser default dialog appears after it and I'm not satisfied with that, I tried also to prevent the browser default dialog from appearing usingpreventDefault()
but also with no mean! if there's any solution to this problem it will be great, here's how I used thewindow.onbeforeunload
:<script> window.onbeforeunload = confirmWinClose(); function confirmWinClose() { var myVar ='${isFireFox}'; if(myVar=='true'){ return confirm(confirmExamClose); }else{ return confirmExamClose; } } <script>
Note:
isFireFox
is a jsp variable that I used to know the type of the browser usingUser-Agent
Header andconfirmExamClose
is the message that I display to the user.