4

ダイアログをカスタムダイアログに置き換えることはできずbeforeunload、ユーザーにカスタムメッセージを設定する必要がある場合は、アンロード前のハンドラーで文字列を返す必要があることを理解しています。

{Custom message here set by returning a string in our beforeunload handler}
Are you sure you want to leave this page?
[Leave this page] [Stay on this page]

では、実際のアンロード前のダイアログがブラウザに表示される前に、カスタムのモーダルダイアログ(おそらくjQuery)を表示するのはどうですか?

私の現在のコードはFancyboxを使用しています:

window.onbeforeunload = function() {
    $.fancybox({ 'type':'iframe', 'href':'/PopupOnExit.php' });
    return "Special offer! Stay on this page for more details.";
};

ただし、これは最初にブラウザのダイアログを表示し、[滞在]または[終了]ボタンをクリックした後にのみ、ブラウザにモーダルダイアログが表示されます。

ブラウザのダイアログの前にモーダルダイアログを表示する方法はありますか?

4

2 に答える 2

3

DOMの変更は、スクリプトの実行が終了したときにのみ有効になります。この場合、明らかなセキュリティ上の理由から、ネイティブダイアログが最初に起動されます。

この不特定の機能(MDNドキュメントを参照)によって導入された多くのセキュリティ問題のために、削除される可能性があることに注意してください(私の意見では最も早く)、それを持っている(データを保存する)古い理由は廃止されていますajaxの年齢。

于 2012-06-27T07:25:21.270 に答える
0

アンロードとonBeforeUnloadは、クロスブラウザイベントではありません。気をつけて。Operaでは機能せず、Chromeでも機能しない場合があります。

于 2012-06-27T07:27:45.083 に答える