web-dev-qa-db-ja.com

アラートがどこから発生したかを知る方法は?

知りたいだけです
どのブラウザからも、どこでアラートが発生したのかを知る方法はありますか?

chrome=で試してみましたが、アラートが表示されたときに利用可能なコールスタックがありません。

何か案が?

51
Mo Valipour

alertを上書きして、スタックトレースのErrorを作成できます。

var old = alert;

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

あなたはそうするためにアラートをモンキーパッチすることができます:

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

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
Piskvor

トレース機能があり、コンソールはすべての主要なブラウザーによって提供されます。 console.trace();

以前の回答で説明したプロキシアプローチとconsole.trace()を使用すると、コンソール自体にスタック全体と行番号を出力できます。

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

これはIIFEです。すべてのアラート呼び出しのトレースがコンソールに出力されます。

1
Aswin