How to find out where the alert is raised from?
JavascriptHtmlFirefoxGoogle ChromeBrowserJavascript Problem Overview
I'm just curious to know
Is there ANY ways in ANY browser to find out where the alert I get is raised from?
I tried it in chrome but there is no call stack available when alert shows.
Any idea?
Javascript Solutions
Solution 1 - Javascript
You can overwrite alert
, and create an Error
for the stack trace:
var old = alert;
alert = function() {
console.log(new Error().stack);
old.apply(window, arguments);
};
Solution 2 - Javascript
You can monkeypatch the alert to do so:
//put this at the very top of your page:
window.alert = function() { throw("alert called") }
Solution 3 - Javascript
How about wrapping the alert
?
window.original_alert = alert;
alert = function (text) {
// check the stack trace here
do_some_debugging_or_whatever();
// call the original function
original_alert(text);
}
This should be cross-browser.
Solution 4 - Javascript
There is a trace function is console is provided by all major browsers. console.trace();
With Proxy approach, as described in earlier answers, and console.trace(), we can print the entire stack with line number in console itself.
(function(proxied) {
window.alert = function() {
console.trace();
return proxied.apply(this, arguments);
};
})(window.alert);
This is an IIFE. Every alert call will have its trace printed in the console.