私はこの質問が古いことを知っていますが、誰かがまだこれに問題を抱えている場合に備えて、私にとってはうまくいくと思われる解決策を見つけました.
基本的に、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);
});
});
編集: ここにjsfiddle