私のブラウザは、 を使用して 20 秒ごとにキープアライブ非同期呼び出しをサーバーに送信しますwindow.setTimeout()
。問題:alert()
ポップアウトすると、AJAX 呼び出しが中断されます。ユーザーがポップアップを閉じる前にしばらく待つと、サーバーは (誤って) ログイン セッションを閉じます。
以前はエラー メッセージをalert()
ポップアップしていましたが、これは製品定義であるため、他の方法は使用できません。
これを回避する方法はありますか?ありがとう
私のブラウザは、 を使用して 20 秒ごとにキープアライブ非同期呼び出しをサーバーに送信しますwindow.setTimeout()
。問題:alert()
ポップアウトすると、AJAX 呼び出しが中断されます。ユーザーがポップアップを閉じる前にしばらく待つと、サーバーは (誤って) ログイン セッションを閉じます。
以前はエラー メッセージをalert()
ポップアップしていましたが、これは製品定義であるため、他の方法は使用できません。
これを回避する方法はありますか?ありがとう
alert()
同様に、prompt()
すべてが UI スレッドをブロックします。これは、他のすべての操作が中断されることを意味します。
jQueryUI のようなモーダル ウィンドウを代わりに使用することをお勧めします。
@JosephtheDreamer が彼の回答で述べたようにalert
、prompt
とconfirm
はすべて UI をブロックします。
本当に を使用したい場合はalert
、WebWorkers を使用できます。それらは別のスレッドで実行されるため、UI のブロックの影響を受けません。彼らはまともなサポートをしていますが、いつものようにIE <10では動作しません.
これは実際にはかなり複雑なので、@JosephtheDreamer のアドバイスに従い、モーダル ウィンドウを使用することをお勧めします。それらは難しいことではなく、問題をより簡単に解決します。
WebWorker の詳細については、 mdn を参照してください。
デフォルトのアラート動作を置き換えてみてください
window.alert = function(message) {
// put your dialog box launching code here.
}
またはこれ
alert = function(foo) {
// some functionality
};
申し訳ありませんが、アラート以外を使用できないのはなぜですか? アラートはあまり魅力的ではなく、ユーザー フレンドリーでもありません。単純なモーダル ウィンドウ (たとえば、jQuery UIのようなもの) の方がはるかに優れています...