0

ユーザーが私の Web サイトの 1 つのページを離れると、そのページにとどまるオプションをユーザーに提供する警告メッセージが表示されます。

「このページを閉じてもよろしいですか?」

次のページが内部ページか外部ページかは問題ではありません。

これは onUnload イベント ハンドラでできると思ったのですが、できませんか?

<body onunload="confirmClose()">

次に、confirmClose() 関数は、2 つのボタンを含むメッセージ ボックスを表示して、ユーザーが「Really leave」または「Stay」を選択できるようにする必要があります。

function confirmClose() {
    return confirm('Really leave this page?')
}

しかし、この関数はアンロードを停止できませんよね?

私の問題の解決策はありますか?前もって感謝します!

4

3 に答える 3

5

テキストのみを提供できます。ブラウザはダイアログボックスを処理します(セキュリティ上の理由)。使用できるコードは次のとおりです。

window.onbeforeunload = function (e) {
    var e = e || window.event;
    var msg = 'Are you sure you want to leave?';

    // For IE and Firefox
    if (e) {
        e.returnValue = msg;
    }

    // For Safari / chrome
    return msg;
}

ただし、これを別のブラウザで試してみてください。異なるブラウザのダイアログの文言に応じて、メッセージの構成が異なることに気付くでしょう。

これが私が使用するものです:

if (IsChrome) {
    return 'You were in the middle of editing. You will lose your changes if you leave this page';
} else {
    return 'You were in the middle of editing. Press OK to leave this page (you will lose your changes).';
}
于 2009-12-28T17:59:38.653 に答える
4

イベントを追加できますonbeforeunloadイベントが呼び出されたときにブラウザが表示するダイアログに含めるテキスト文字列のみを返すことができることに注意してください。confirmそれを超えてダイアログを微調整することはできません。また、実行しようとしているときに独自のダイアログをトリガーすることもできません。

いくつかの特定の状況を除いて、これは非常に迷惑な動作であることに注意してください。これで重大なデータ損失から私を救ってくれる場合を除き、実行しないでください。

于 2009-12-28T17:52:44.170 に答える
1

ブラウザーは、確認ウィンドウの表示を処理します。聞きたいメッセージを含む文字列を返す必要があります。また、onbeforeunloadブラウザ間の互換性のために使用することもできます。

于 2009-12-28T17:51:59.333 に答える