Detect if an alert or confirm is displayed on a page Detect if an alert or confirm is displayed on a page jquery jquery

Detect if an alert or confirm is displayed on a page


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