Is there a way using JavaScript or jQuery to detect if a confirm or alert box is being displayed?
If you wanted to run some code when an alert() fires, you could try something like this:
I've only tested in Chrome, so I'm not sure about browser support.
Example: 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');
Of course this only lets you run code before and after an alert. As @kander noted, javascript execution is halted while the alert is displayed.
No there is not. You can check that the return value of a confirm command is indeed true or false but you cant check whether there visually there.
These things are part of the browser not part of the DOM. I'm sure there's a dirty hack that works for IE because it's a bastardized child of the windows OS.
You could do this if you want to...
(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'));
};
}());
The downside to this is that
alert() confirm() usage, haha