これを chrome と firefox/IE で試してください:
var cancelPressed = false;
function redirect() {
//window.location = "http://www.google.com";
alert('hi!');
}
window.onbeforeunload = function() {
window.pressedTimer = setInterval("cancelPressed = true; clearInterval(window.pressedTimer);",3000);
window.onbeforeunload = function() {
if (!cancelPressed) {
window.unloadTimer = setTimeout('redirect()',500);
window.onbeforeunload = function() {clearTimeout(window.unloadTimer);};
return "Redirecting..";
} else {
return 'wups';
}
};
return 'first!';
};
FF/IE では、更新し、最初のプロンプトでキャンセルを押し、約 6 秒待ってから更新を試みます。「wups」がトリガーされます。ただし、Chrome では、好きなだけ待つことができ、cancelPressed が true に設定されることはありません。
どう思いますか?