2011-10-18 26 views
38

私はちょうど好奇心を知っている
私はどのようなアラートが発生したかを見つけるために、どのブラウザにも何か方法がありますか?アラートがどこから発生したかを調べるにはどうすればよいですか?

私はChromeで試しましたが、アラートが表示されてもコールスタックは使用できません。

+3

関連する可能性があります。http://stackoverflow.com/questions/3638249/debug-js-code-which-triggers-an-alert –

答えて

79

あなたはalertを上書きすることができ、およびスタックトレースのためのErrorを作成します。

var old = alert; 

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

ありがとうございます!私はアラートが窓のメンバーだとは決して考えなかった! –

+0

console.logステートメントをデバッガーステートメントに置き換えることで、alertが呼び出された時点でデバッガーにドロップすることもできます。 –

+0

これは十分にありがとうございます。私は多くの問題を持つ古いウェブサイトを持っています。そのうちの1人はXSSを全面的に利用していました。だから私は1つの値を ' 'それから、文字列が評価され、アラートがポップアップしていたすべての場所を見つける悪夢があった。あなたの答えは非常に有用でした。さあ、私の息を止めて、そのセスプールに戻りましょう。 – Sharky

4

あなたはそうするように警告をモンキーパッチすることができます

//put this at the very top of your page: 
window.alert = function() { throw("alert called") } 
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); 
} 

これはクロスブラウザである必要があります。

関連する問題