0

JavaScript では、無限ループがある場合:

setInterval("popalert", 5000)

単純にアラート ボックスをポップする場合popalert()、まだ閉じられていないアラート ボックスが 1 つある場合にアラート ボックスがポップアップしないようにする最善の方法は何ですか?

4

5 に答える 5

3

アラートが存在することを検出する方法はありません。

使用しないsetIntervalでください。使用してくださいsetTimeout

アラート発生後にタイムアウトをリセットします。

jsfiddle の例

于 2012-05-22T13:48:55.757 に答える
0

標準の JavaScript アラート ボックスは非常に単純であるため、検出することはできません。それらを生成し続けると、それらはキューに入れられ、最新のブラウザーでは、実際には、特定のページで数回後にそれらを抑制するオプションが提供されます.

常に 1 つのボックスしか持たないことが重要な場合は、別のタイプの通知システムを使用することを検討します。jQuery UI Dialogのようなもの。

于 2012-05-22T13:49:40.140 に答える
0

popalert 関数は、アラート ボックスの状態を保存できます。

var bOpen = false;

次に、ポップアップが表示されたらtrueに設定します

そして、OKを押した後に閉じるか、何かを再度falseに設定します。

popalert が再度呼び出されると、bOpen var がチェックされ、true の場合、新しいポップアップは開かれません。

また、私はsettimeoutを使用するので、この無限ループがGUIをブロックすることはありません。

于 2012-05-22T13:50:26.660 に答える
0

アラート ボックスが既にここにあるかどうかを検出することはできません。ナビゲーターがこのアラート ボックスを管理するため、別のアラート ボックスが既にここにある場合、ナビゲーターはポップアップできません。

于 2012-05-22T13:51:08.827 に答える
0

グローバル javascript 変数を (任意の関数から) 使用して、この変数を最初に false に設定できます。popalert 関数が呼び出された場合は、グローバル変数が false かどうかを確認してください。その場合は、アラートをポップして、var を true に設定します。これを行うと、アラートは 1 つだけ表示されますが、関数は何度も実行されます (これが重要な場合)。

于 2012-05-22T13:51:53.480 に答える