js エラーをキャッチする場合、通常は try{}catch(e){} を使用し、e.errorMessage やその他のメソッドを通じてエラー情報を取得して、エラーを報告します。しかし、onerror イベントについてはほとんど心配する必要はありません。エラーが発生した行番号を報告する方法について考えたことはあるでしょうか。これについて考えたことがある方は、この問題に悩まされたことがありますか? js で間違った行番号をキャプチャすることは不可能だと思いますか? 実際、私は今日、ある記事を読みました。誰かが書いた js コードを見て、突然それを発見しました。onerror イベントについてはずっと前から知っていましたが、その 3 つのパラメーターとその特殊なプロパティをまったく理解していませんでした。私自身の調査とテストの結果、onerror イベントについて新たな知識と理解を得ることができました。ページにエラーがない場合、window.onerror イベントは存在しません、つまり null (ナンセンス! エラーがない場合、onerror が発生するのは正常ですか?) 通常、実行する操作関数を渡す関数名 (参照による) window.onerror=reportError;window.onerror=function(){alert('error')} などの onerror イベントを指定しますが、イベントに 3 つのデフォルト パラメーターがあるかどうかは分からないかもしれません。エラー情報、エラーページのURL、エラー行番号です。これは onclick イベントや onmouseover イベントと同様にイベントですが、パラメータがあることを知っておく必要があります。このようにテストできます。
を実行するために更新する必要があります]
まずtestError メソッドをバインドします。onerror イベントを与え、テスト メソッドでエラーをトリガーします。IE で実行すると、次のプロンプトが表示されました:
----------------- ---- ---
Microsoft Internet Explorer
--------------------------
パラメータの数: 3
パラメータ 1: 'error' は未定義です
パラメータ 2: file://E:yanweitesttestError.html
パラメータ 3: 14
-------------- -- -----------
OK
-----------------------
エラーが発生すると、関数 testError が 3 つのパラメーターをキャプチャします。この関数を onerror イベントにバインドすると、ページが失敗したときに上記の 3 つのパラメーターをキャプチャできます。
テスト中に次の問題も見つかりました:
1. 関数の最後に return true を追加することで、関数が失敗したときにシステム エラー メッセージ (IE) が表示されなくなります。
2. ページ上で複数のエラーが発生した場合、最初のエラーのみがキャプチャされて処理され、その後のプログラムの実行は終了します。
3. onerror イベントはすべてのエラーをキャプチャできるわけではありません。
function test(){ aaaa;
}
adasdf
function test(){
aaaa;
}
aaaa の未定義エラーをキャプチャでき、test( ){} または関数 test()dd{} はキャプチャできず、システム エラー メッセージが直接ポップアップ表示されます。
4. Onerror は IE や FF などのブラウザでも同様に実行され、どちらにもこれら 3 つのパラメータが含まれます。