簡単な答え:いいえ、「このページにとどまる」イベントを傍受するためのコールバックや直接的な方法はまだありません。
ただし、少しごまかして、次のような構成を作成することができます。
function warning() {
setTimeout(function() {
setTimeout(function() {
alert('user choosed to stay on this site: ' + location.href);
}, 100);
},1);
return "You are leaving the page";
}
window.onbeforeunload = warning;
質問はモーダルダイアログであるため、setTimeout
モーダルボックスを確認するまでコールバックは発生しません。しかし、あなたが今正しく想定しているように、これは「このサイトを離れる」をクリックした場合にもトリガーされます。したがって、これは注意が必要です。setTimeout
これを解決するには、ブラウザにページを表示するのに十分な時間を与えるためにを増やす必要がありunload
ます。
なぜ2つsetTimeout()
のがネストされているのですか?まあ、モーダルダイアログがポップアップするとすぐにタイマーが「実行」されます。したがって、モーダルダイアログが閉じられるまでそのタイマーを実行したくありません。それが起こるとすぐに、私たちのインナーsetTimeout
は起動し、時間の経過とともに何かをします。
2.000
ほとんどの現実世界のシナリオの現実的な値は、内部の約ミリ秒だと思いますsetTimeout