如何找出警报的来源?

时间:2011-10-18 14:14:15

标签: javascript html firefox google-chrome browser

我只是很想知道 在任何浏览器中是否有任何方法可以找出我从哪里获得警报?

我在Chrome中尝试了它,但是在警报显示时没有可用的调用堆栈。

有什么想法吗?

4 个答案:

答案 0 :(得分:96)

您可以覆盖alert,并为堆栈跟踪创建Error

var old = alert;

alert = function() {
  console.log(new Error().stack);
  old.apply(window, arguments);
};

答案 1 :(得分:4)

您可以通过monkeypatch警报执行此操作:

//put this at the very top of your page:
window.alert = function() { throw("alert called") }

答案 2 :(得分:4)

如何包装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);
}

这应该是跨浏览器。

答案 3 :(得分:1)

所有主要的浏览器都提供了控制台的跟踪功能。 console.trace();

使用代理方法(如先前答案中所述)和console.trace(),我们可以在控制台本身中打印带有行号的整个堆栈。

(function(proxied) {
  window.alert = function() {
	console.trace();
    return proxied.apply(this, arguments);
  };
})(window.alert);

这是IIFE。每个警报呼叫将在控制台中打印其踪迹。