Я знаю, что этот вопрос старый, но если у кого-то все еще есть проблемы с этим, я нашел решение, которое, похоже, работает для меня,
В основном событие unload
запускается после событие beforeunload
. Мы можем использовать это, чтобы отменить тайм-аут, созданный в событии beforeunload
, изменяя ответ jAndy:
$(function() {
var beforeUnloadTimeout = 0 ;
$(window).bind('beforeunload', function() {
console.log('beforeunload');
beforeUnloadTimeout = setTimeout(function() {
console.log('settimeout function');
$(document.body).css('background-color', 'red');
},500);
return 'are you sure';
});
$(window).bind('unload', function() {
console.log('unload');
if(typeof beforeUnloadTimeout !=='undefined' && beforeUnloadTimeout != 0)
clearTimeout(beforeUnloadTimeout);
});
});
EDIT: jsfiddle здесь