0


0

遅延ロードされたjavascriptでのランタイムエラー処理?

遅延ロードされたjavascriptでエラー処理を行う方法はありますか? 私は、ajaxリクエストが呼び出され、コードがグローバルスコープで評価されるアプローチを使用しています。 ランタイムエラーが発生すると、ファイル名が遅延読み込みスクリプトとして出力され、行番号はエラー行と読み込みスクリプト内のevalの行番号になります。 これは、すべてのjavascriptファイルがサイトのセクションのモジュールに結合されることを除いて、それほど悪くはありません。 javascriptファイル自体をキャッチしようとすると、関数の実行時エラーはキャッチされません。 何か案は? Window.onerrorは正しいファイル名を提供しないため、問題外です。 ヒットする前にキャッチする必要があります。

私はプログラムで評価されたコード内のすべての関数の周りにキャッチを試みることができると考えていました(これはいです)が、ウィンドウレベルで行われるため、評価されたコードに具体的かつ動的にアクセスする方法がわかりません。 javascriptが「Bob」という名前のオブジェクトであれば、window.Bobにアクセスできますが、動的に実行する必要があります。

1 Answer


1


私は問題を解決しましたが、それは最もエレガントな解決策ではありません。 基本的に私がすることはこれです:+ 1。 サイトが読み込まれた後、ウィンドウ内にあるすべてのオブジェクトを見て、それらを配列にプッシュします。 これは基本的に私のコードに、これらのオブジェクトを無視します。

  1. コードをモジュール化するとき、ファイルの長さを追跡し、 モジュールに配置されるfileNames。

  2. モジュライザーの最後の行は、fileLength配列を受け取り、 lineLengthsおよびエラー処理オブジェクトの関数を呼び出します。

  3. エラー処理コードは、ウィンドウ内で新しいオブジェクトを見つけます。 それらが存在する場合、 fileLengthsとfileNamesに一致するようにプロパティを設定します。

  4. 新しいオブジェクトを再帰処理し、追加する関数を追加します それらの周りにキャッチしてみてください。

  5. それらのキャッチの1つがヒットしたら、上方向に移動して、 プロパティ

  6. プロパティに基づいてファイルと行番号を計算します。

  7. 正しいファイルと行番号に基づいて新しいエラーを出力します。

はい、Yesい…​ しかしそれはうまくいきます。