4

PHP、HTML、および JavaScript に基づく典型的な Web アプリケーションがあります。

HTML ページから、ユーザーはサーバーとの ajax 対話を行う JavaScript アクションを起動できます。この JavaScript 関数は、たまたま、ユーザーの確認を求める複数の警告メッセージを表示します。

2 番目のアラートが実行されると、ブラウザー (Chrome バージョン 18.0.1025.142 m) はアラート ボックスにメッセージと、ユーザーが「このページから他のダイアログ ウィンドウをブロックする」ことができるチェックボックスを表示します (これは私が翻訳した正確なテキストではありません)。私のブラウザのイタリア語から)。

ユーザーはブラウザーに連続するアラートをブロックするように指示できますが、これは私のアプリケーションには適していません。

ユーザーがアラートをブロックする機能を回避して、複数のアラートを表示する方法はありますか?

おそらく、アラート以外のもの、おそらくjQueryコンポーネントを使用する必要がありますか? 私がそれを行う場合、アラートに似ているのはどれですか?

4

3 に答える 3

5

代替手段としてjQueryのダイアログを強くお勧めします。これは実際には物理的なポップアップではありません。これは実際には Web ページ上のフローティング div であるため、ブロックすることはできません。もう 1 つの大きな利点は、見ていて恥ずかしくないということです。

于 2012-04-04T10:53:16.780 に答える
4

一部のブラウザーでは、関数にこの機能が提供されていalert()ます。そうしないと、悪意のある Web 開発者が無限のアラートを開いて、ユーザーがページを離れるのを防ぐことができるためです。Rick-rolling を覚えていますか? これを回避するコードを作成する方法はありません。

別の方法は、html を使用して、ページの残りの上に表示されるダイアログを実装することです。(通常) 透明 (または半透明) div を使用してページ全体を覆い、ダイアログ要素以外との相互作用を防ぎます。jQuery UI は、これを行うダイアログ コントロールを提供します - モーダル オプションを見てください。

于 2012-04-04T11:02:04.023 に答える
0

これらがブロックされているかどうかを検出する方法を思いつきました。ユーザーに表示するメッセージを自分で処理する必要があります。

window.nativeAlert = window.alert;
window.alert = function (message) {
var timeBefore = new Date();
var confirmBool = nativeAlert(message);
var timeAfter = new Date();
if ((timeAfter - timeBefore) < 350) {
    MySpecialDialog("You have alerts turned off, turn them back on or die!!!");
  }
}

window.nativeConfirm = window.confirm;
window.confirm = function (message) {
var timeBefore = new Date();
var confirmBool = nativeConfirm(message);
var timeAfter = new Date();
if ((timeAfter - timeBefore) < 350) {
    MySpecialDialog("You have alerts turned off, turn them back on or die!!!");
}
 return confirmBool;
}

明らかに、時間を 3.5 ミリ秒に設定しました。しかし、いくつかのテストの後、約 5 ミリ秒以上でダイアログをクリックまたは閉じることができました。

于 2014-05-15T22:54:39.423 に答える