JavaScript では、無限ループがある場合:
setInterval("popalert", 5000)
単純にアラート ボックスをポップする場合popalert()
、まだ閉じられていないアラート ボックスが 1 つある場合にアラート ボックスがポップアップしないようにする最善の方法は何ですか?
JavaScript では、無限ループがある場合:
setInterval("popalert", 5000)
単純にアラート ボックスをポップする場合popalert()
、まだ閉じられていないアラート ボックスが 1 つある場合にアラート ボックスがポップアップしないようにする最善の方法は何ですか?
アラートが存在することを検出する方法はありません。
使用しないsetInterval
でください。使用してくださいsetTimeout
。
アラート発生後にタイムアウトをリセットします。
標準の JavaScript アラート ボックスは非常に単純であるため、検出することはできません。それらを生成し続けると、それらはキューに入れられ、最新のブラウザーでは、実際には、特定のページで数回後にそれらを抑制するオプションが提供されます.
常に 1 つのボックスしか持たないことが重要な場合は、別のタイプの通知システムを使用することを検討します。jQuery UI Dialogのようなもの。
popalert 関数は、アラート ボックスの状態を保存できます。
var bOpen = false;
次に、ポップアップが表示されたらtrueに設定します
そして、OKを押した後に閉じるか、何かを再度falseに設定します。
popalert が再度呼び出されると、bOpen var がチェックされ、true の場合、新しいポップアップは開かれません。
また、私はsettimeoutを使用するので、この無限ループがGUIをブロックすることはありません。
アラート ボックスが既にここにあるかどうかを検出することはできません。ナビゲーターがこのアラート ボックスを管理するため、別のアラート ボックスが既にここにある場合、ナビゲーターはポップアップできません。
グローバル javascript 変数を (任意の関数から) 使用して、この変数を最初に false に設定できます。popalert 関数が呼び出された場合は、グローバル変数が false かどうかを確認してください。その場合は、アラートをポップして、var を true に設定します。これを行うと、アラートは 1 つだけ表示されますが、関数は何度も実行されます (これが重要な場合)。