1

JavaScript でスタックトレースを生成しようとしています。Chrome で非常にうまく機能する実装がありますが、Firefox には問題があります。DOMExceptions のようなネイティブ例外には.stackプロパティがありません。

<div id="test"></div>
<script type="text/javascript">
try {
    var range = document.createRange();
    range.setStart(document.getElementById("test"), -1); // throws Exception
} catch (e) {
    console.log(e.stack);
}
</script>

これはError: Index or size was negative, or greater than the allowed value. at http://test/test.html:5:8Chromeで提供されます。

しかし、Firefoxでは、undefined悲しいことに:(

私はEriwen の stacktrace スクリプトstracktracejsについて知っており、私の実装はそれに触発されています。フォールバックの使用を検討しますcaller.calleeが、ファイルと行番号を取得できないため、使用したくありません。

より良い解決策を知っていますか?


疑わしい呼び出しを try-catch ステートメントでラップすることはできますが、実際のエラーが発生する前に呼び出しが疑わしいかどうかがわからないため、コードを修正して二度とスローされないようにします。

例外をキャッチして再スローすることはできましたnew Error(e.message)が、スタックトレースも失われました。

4

1 に答える 1

0

試してみe.locationましたが、これによりFirefox の既知のバグが発生します。Error: Permission denied for <file://> to create wrapper for object of class UnnamedClass.

とにアクセスできます。これが私が今行っている解決策です。e.filenamee.lineNumber

于 2012-11-06T14:36:00.497 に答える