web-dev-qa-db-ja.com

Javascript閉じる警告ボックス

一定時間後または特定のイベント(onkeypress)でjavascriptを使用してアラートボックスを自動的に閉じることができるようにしたいと思います。私の研究から、組み込みのalert()関数ではそれが可能とは思えません。それをオーバーライドし、それが開くダイアログボックスを制御する方法はありますか?

また、非表示のdivをアラートとして表示するオーバーライドは必要ありません。実際のダイアログボックスが必要です。

31
Andrew Ensley

前述したように、あなたは本当にこれを行うことはできません。 UIフレームワークを使用してウィンドウ内でモーダルダイアログを実行するか、タイムアウト後に自動終了するスクリプトを使用してポップアップウィンドウを作成することができます。それぞれにマイナスの側面があります。ブラウザー内のモーダルウィンドウは、ウィンドウが最小化されている場合、通知を作成しません。また、プログラム(タイマーベース)ポップアップは、最新のブラウザーやポップアップブロッカーによってブロックされる可能性があります。

18
Tracker1

Notification APIで似たようなことを達成できるようです。表示時間を制御することはできません(おそらく、何らかのOSの設定-requireInteraction trueを指定しない限り)。また、ユーザーに[通知を許可する]をクリックする必要があります(残念ながら)が、ここにあります。

1秒後に閉じる場合:

var notification = new Notification("Hi there!", {body: "some text"});
setTimeout(function() {notification.close()}, 1000);

「デフォルト」よりも長く表示したい場合は、oncloseコールバックにバインドし、別の繰り返し通知を表示して置き換えることができます。

参照: this answerに触発されましたが、その答えは現代のChromeではもう機能しませんが、通知APIは機能します。

6
rogerdpack

ダイアログボックスを制御できません。ダイアログボックスを制御できる場合は、邪魔なjavascriptコードを記述できます。 (デバッグ以外にアラートを使用することはお勧めできません)

5
ForYourOwnGood

一定時間後または特定のイベント(つまり、onkeypress)でjavascriptを使用してアラートボックスを自動的に閉じることができるようにしたい

補足:Alert( "data")がある場合、コードをバックグラウンドで実行し続けることはできません(AFAIK)..。ダイアログボックスはモーダルウィンドウなので、フォーカスを失うことはできません。そのため、キープレスやタイマーは実行されません...

3
Ironicnet

ブートボックスプラグインを試してください。

var alert = bootbox.alert('Massage')
alert.show();
setTimeout(function(){alert.modal('hide'); }, 4000);
2
Dhaval Rajpara

ポップアップウィンドウを開いて、thatダイアログボックスを呼び出すことができると思います。詳細はわかりませんが、javascriptから開いたウィンドウをプログラムで閉じることができると確信しています。これで十分でしょうか?

1
David Hanak

ここでの唯一の本当の代替手段は、モーダルオプションで何らかのカスタムウィジェットを使用することです。これらの機能を備えたダイアログの例については、jQuery UIをご覧ください。同様のことが、言及できるほぼすべてのJSフレームワークに存在します。

1
Toby Hede