3

私のブラウザは、 を使用して 20 秒ごとにキープアライブ非同期呼び出しをサーバーに送信しますwindow.setTimeout()。問題:alert()ポップアウトすると、AJAX 呼び出しが中断されます。ユーザーがポップアップを閉じる前にしばらく待つと、サーバーは (誤って) ログイン セッションを閉じます。

以前はエラー メッセージをalert()ポップアップしていましたが、これは製品定義であるため、他の方法は使用できません。

これを回避する方法はありますか?ありがとう

4

4 に答える 4

4

alert()同様に、prompt()すべてが UI スレッドをブロックします。これは、他のすべての操作が中断されることを意味します。

jQueryUI のようなモーダル ウィンドウを代わりに使用することをお勧めします。

于 2012-11-27T09:24:21.040 に答える
3

@JosephtheDreamer が彼の回答で述べたようにalertpromptconfirmはすべて UI をブロックします。

本当に を使用したい場合はalert、WebWorkers を使用できます。それらは別のスレッドで実行されるため、UI のブロックの影響を受けません。彼らはまともなサポートをしていますが、いつものようにIE <10では動作しません.

これは実際にはかなり複雑なので、@JosephtheDreamer のアドバイスに従い、モーダル ウィンドウを使用することをお勧めします。それらは難しいことではなく、問題をより簡単に解決します。

WebWorker の詳細については、 mdn を参照してください

于 2012-11-27T09:27:30.753 に答える
0

デフォルトのアラート動作を置き換えてみてください

window.alert = function(message) {
// put your dialog box launching code here.

}

またはこれ

alert = function(foo) {
// some functionality

};

于 2012-11-27T09:52:35.057 に答える
0

申し訳ありませんが、アラート以外を使用できないのはなぜですか? アラートはあまり魅力的ではなく、ユーザー フレンドリーでもありません。単純なモーダル ウィンドウ (たとえば、jQuery UIのようなもの) の方がはるかに優れています...

于 2012-11-27T09:24:37.433 に答える