Как узнать, откуда взято предупреждение? - PullRequest
45 голосов
/ 18 октября 2011

Мне просто любопытно узнать
Есть ли в ЛЮБОМ браузере ЛЮБЫЕ способы выяснить, откуда появляется предупреждение, которое я получаю?

Я пробовал его в Chrome, но стек вызовов недоступенкогда появляется предупреждение.

Есть идеи?

Ответы [ 4 ]

96 голосов
/ 18 октября 2011

Вы можете перезаписать alert и создать Error для трассировки стека:

var old = alert;

alert = function() {
  console.log(new Error().stack);
  old.apply(window, arguments);
};
4 голосов
/ 18 октября 2011

Как насчет упаковки 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);
}

Это должен быть кросс-браузер.

4 голосов
/ 18 октября 2011

Вы можете сделать обезьянку для предупреждения:

//put this at the very top of your page:
window.alert = function() { throw("alert called") }
1 голос
/ 11 октября 2018

Существует функция трассировки консоли, которая предоставляется всеми основными браузерами. console.trace ();

При использовании подхода Proxy, как описано в предыдущих ответах, и console.trace () мы можем напечатать весь стек с номером строки в самой консоли.

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

Это IIFE. Каждый тревожный вызов будет напечатан в консоли.

...