0

ページをリロードするときに Impromptu アラート ボックスを確認ボックスとして使用したいと考えています。現在、この通常の JavaScript を使用しています。

window.onbeforeunload = function(event) {
    return confirm("Confirm refresh");
};

しかし、私はもうこれを使いたくないので、ページのリロード時に Impromptu の確認ボックスをロードする機会はありますか?

前もって感謝します

4

1 に答える 1

0

短い答え:いいえ。

長い答え: Javascript は、アンロード時 (またはアンロード前) のコールバックを待つことはできません。イベントが返されると、ページはアンロードされます。そのことを念頭に置いて、カスタムの確認ボックスは常にユーザーの操作を待つ必要があり、これがブロックされることはありません。そのため、Impromptu (またはその他のプラグイン) は、ページのアンロードを防ぐことができません。ネイティブ関数 (アラート、確認、さらには XMLHttpRequest など) には一種の例外があります。これらはブロックされているか、ブロックされる可能性があるため、ページのアンロードで実行できます。

Mozilla のドキュメントによると、最新のブラウザでは .NET でダイアログを作成することさえできませんwindow.onbeforeunload。関数をクロムでテストすると、ダイアログが作成されます。

ナビゲーションを確認

間違い

このページを離れてもよろしいですか?

あなたができる最善のことは次のようなものです:

window.onbeforeunload = function() {
    return "There is more to see on this site!";
};

これにより、次のようなボックスが作成されます。

ナビゲーションを確認

このサイトには他にもたくさんあります!

このページを離れてもよろしいですか?

ページのリロードで何かを行う唯一の方法は、ページがリロードされた後、つまり新しくリクエストされたページで行うことです。

注: onbeforeunload イベントを使用しないことを強くお勧めします。これにより、ページを閉じる前にクリックしなければならない追加のポップアップがユーザーに表示されます。サイトが私にそんなことをするのは本当に嫌いです。スパムのように感じます。

于 2016-04-05T13:06:47.810 に答える