JavaScriptまたはjQueryを使用して確認または警告ボックスが表示されているかどうかを検出する方法はありますか?警告または確認がページに表示されているかどうかを検出する
答えて
いいえありません。 confirm
コマンドの戻り値が実際にtrue
またはfalse
であることを確認できますが、そこに視覚的に存在するかどうかは確認できません。
これらはDOMの一部ではないブラウザの一部です。私はWindows OSの卑劣な子供だからIEのために働く汚れたハックがあると確信している。
イベントをブロックしているボックスを確認して警告する - これらのイベントが表示されている間は、JavaScriptコードの実行が停止されます。だから、私が知る限り、あなたが現在表示されているかどうかを検出することはできません。私はChromeでテストしてみた
、私はブラウザのサポートについてはよく分からない:あなたはalert()
火災は、あなたがこのような何かを試すことができたときに、いくつかのコードを実行したい場合は
これはUIスレッドをブロックするのは当てはまりますが、これでスニッフィングできるわけではありません。 –
。
例:もちろんhttp://jsfiddle.net/Q785x/1/
(function() {
var _old_alert = window.alert;
window.alert = function() {
// run some code when the alert pops up
document.body.innerHTML += "<br>alerting";
_old_alert.apply(window,arguments);
// run some code after the alert
document.body.innerHTML += "<br>done alerting<br>";
};
})();
alert('hey');
alert('you');
alert('there');
これだけアラートの前と後のコードを実行することができます。 @kanderが指摘したように、アラートが表示されている間、javascriptの実行は停止されます。これまであなたがしたい場合は、これを行うことができます
...
(function() {
// remember the normal alert
var oldAlert = (function(){ return this.alert; }()),
oldConfirm = (function(){ return this.confirm; }());
// inject ourself into the window.alert and window.confirm globals
alert = function (msg) {
oldAlert.call(document, msg);
document.onAlert(msg);
};
confirm = function (msg) {
var result = oldConfirm.call(document, msg);
document.onConfirm(msg, result);
return result;
};
// these just chill and listen for events
document.onAlert = function (msg) {
window.console && console.log('someone alerted: ' + msg);
};
document.onConfirm = function (msg) {
window.console && console.log('someone was asked: ' + msg);
window.console && console.log('and they answered: ' + (msg ? 'yes' : 'no'));
};
}());
欠点は
- あなたはいけないブラウザ(もののホスト方法をハッキングしているということです一般的に行う - http://perfectionkills.com/whats-wrong-with-extending-the-dom/)
- は、あなたは自分の
alert()
confirm()
利用状況をより良く維持トラックでなければなりません、笑
これらがブロックされているかどうかを検出したい場合。表示するメッセージであなた自身のことをする必要がありますが、ネイティブのアラートを上書きする/確認します。
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ミリ秒でダイアログをクリックまたは閉じることができました。
confirm()では、時間枠が短すぎる場合はnullを返すこともできます。これは発信者によって検出されるだけでなく、ほとんどの通常の使用に対して「偽」のように見えることがあります。 –
時間枠があまりにも短い場合にnull(またはfalse)に戻すことを無効にすると、誰かがフォーム投稿を送信してもEnterキーを長押ししてしまうと誤った自動確認を防ぐことができます。 –
これは悪い考えではありませんが、ユーザーの決定を無効にすることについて心配しています。確認があることが分かっている可能性があります。私はそれを行うことの利点を見ていますが、これを行う際にそれが1つの抜け穴であるためです。入力を保持できる人は特別なダイアログを起動します。しかし、それは時間の99.9%で動作します。 – DeadlyChambers
@ user113716の回答に追加するには、時間を頼りにすることができます。私は確認ダイアログが200ミリ秒未満であった場合、それはブラウザによってブロックされていると仮定します。以下は、確認ダイアログがブロックされている場合にtrueを返します(デフォルトではfalseを返し、コードはTypeScriptにあります)。
let oldConfirm = window.confirm;
window.confirm = (msg) => {
let time = new Date().getTime();
let conf = oldConfirm(msg);
return new Date().getTime() - time > 200 ? conf : true;
}
- 1. 未確認の警告が表示されるのはなぜですか?
- 2. スプライトオブジェクトが表示されているかどうかを確認するには?
- 3. 警告ダイアログボックスに警告メッセージが表示されませんか?
- 4. AJAXを使用して警告ボックスがPHPで表示されているか確認してください。
- 5. JavaScriptでページがブラウザに表示されているかどうかを確認するには?
- 6. どのようにIE6を検出し、警告を表示するには?
- 7. AdMob - 表示された広告カテゴリを確認するにはどうすればよいですか?
- 8. ページが表示されていることを検出するにはどうすればよいですか?
- 9. NSWindowが表示されているかどうかを確認する方法
- 10. マーカーが表示されているかどうかを確認する(マップ) - マップボックス
- 11. ボタンが表示されているかどうかを確認するSelenium
- 12. セルが表示されているかどうかを確認する
- 13. ポイントが表示されているかどうかを確認する
- 14. ツールチップが表示されているかどうかを検出しますか?
- 15. ページが更新されたかどうかを確認する
- 16. node.jsに警告メッセージとエラーメッセージが表示されるのはどうですか?
- 17. ページがブラウザで表示されているかどうかを確認しますか? PHP
- 18. マニュアルで警告が表示されていませんが、自動で警告が表示されます
- 19. div内に要素が表示されているかどうかを確認
- 20. ポップアップメニューが非アクティブになっているかどうかを確認する/ポップアップメニューが表示されているかどうかを確認する
- 21. 「要件は既に満たされています」という警告を表示しない警告
- 22. ボタンをクリックすると警告が表示されますか?
- 23. Googleの検索結果のどのページが表示されているかを確認するにはどうすればよいですか?
- 24. SMSまたは連絡先が表示されているかどうかを確認する方法?
- 25. ReactJS:アプリケーションがモバイルブラウザまたはデスクトップブラウザで表示されているかどうかを確認する方法
- 26. UIViewControllerが表示されているかどうかを確認する良い方法はありますか?
- 27. IEのセキュリティ警告ウィンドウがhttpsページに表示される
- 28. キャンバス:ブラウザに表示されているかどうかを検出します。
- 29. 警告:複数バージョンのスカラーライブラリが検出されましたか?
- 30. オーバーレイが表示されているかどうかを検出する
"表示中"とはどういう意味ですか?コード内でコマンドへの参照があるかどうかは分かりますか? –
Web Workersを使えば... –
@SimeVidasどうやって説明できますか? – Raynos