How to find out where the alert is raised from?

后端 未结 4 1416
悲&欢浪女
悲&欢浪女 2021-01-30 10:06

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 availabl

相关标签:
4条回答
  • 2021-01-30 10:56

    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.

    0 讨论(0)
  • 2021-01-30 10:58

    You can monkeypatch the alert to do so:

    //put this at the very top of your page:
    window.alert = function() { throw("alert called") }
    
    0 讨论(0)
  • 2021-01-30 11:00

    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.

    0 讨论(0)
  • 2021-01-30 11:05

    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);
    };
    
    0 讨论(0)
提交回复
热议问题