1

Internet Explorer 7/8エラーオブジェクトから行番号を取得する方法はありますか?

.message、.description、および.numberプロパティのみを認識しています。

少し検索して、.stack(http://msdn.microsoft.com/en-us/library/hh699850 (v=vs.94).aspx )でMSDNの記事を見つけましたが、独自の例を使用しています。コードは行番号を返しません:

http://jsfiddle.net/LWevS/

4

1 に答える 1

6

さらに調べてみたところ、window.onerror を使用して IE の行番号を取得できることがわかりました。これは Error オブジェクト自体によるものではありませんが、適切な回避策です:

function BadFunction(){
    This.badcode.willnot.work = 1000
}

function ForceError(msg, url, lno) {
  alert("Error Occurred! Handled by Generic Error Handler" + "\n" +
     "Error: " + msg + "\n" + "URL: " + url + "\n" +   
     "Line Number: " + lno);

  return true;
}

window.onerror = ForceError;

この方法では、エラーがウィンドウまで泡立つ必要があります。コードに try/catch がある場合は、エラーが発生する可能性があるため、エラーを再スローする必要があります。

この問題の解決策を調べているときに、GitHub で StackTraceJS にも出会いました。彼らのスタック トレース スクリプトは、Internet Explorer を除くすべてのブラウザーでうまく機能します。クライアント ブラウザーで生成されたエラーをログに記録する場合に最適なランタイム デバッガー。

http://stacktracejs.com/

于 2012-05-22T23:12:22.620 に答える