4

onbeforeunload の原因が閉じるボタンのクリックによるものか、ページの更新によるものか、または一般的に onbeforeunload の原因となったイベントを特定するにはどうすればよいですか?

ここにスニペットがあります:

window.onbeforeunload = function( e ){
    if( !e ) e = window.event;

    // insert code to determine which is the source of the event
}

私を助けてください。

4

4 に答える 4

5

さまざまな記事を参考にして試行錯誤を繰り返した結果、最終的にこのアイデアを思いつきました。ロジックは実装もシンプルで静かで、ブラウザを閉じることによってトリガーされるアンロード イベントを検出するという考え方でした。その場合、マウスはウィンドウの外に出て、Close('X') ボタンを指します。

$(window).on('mouseover', (function () {
    window.onbeforeunload = null;
}));


$(window).on('mouseout', (function () {
    window.onbeforeunload = ConfirmLeave;
}));

function ConfirmLeave() {
    return "";
}

ConfirmLeave 関数は、ポップアップのデフォルト メッセージを表示します。メッセージをカスタマイズする必要がある場合は、空の文字列の代わりに表示されるテキストを返します。

これが役立つかどうかを確認してください:)

于 2014-10-09T10:21:53.560 に答える
2

私の知る限り、原因を特定する方法はありません onbeforeunload。このイベントは、ブラウザを閉じるか、その他の方法でウィンドウを閉じるときにトリガーされます。

于 2010-09-21T07:00:09.300 に答える
0

閉じるボタンが押された場合、 の値e.clientYは負になります。他の考えられる情報源については、解決策があるとは思えません。

window.onbeforeunload = function() {
   var e = window.event;
   alert(e.clientX + " / " + e.clientY);
}
于 2010-09-21T10:48:09.713 に答える