この質問は javascript:スクリプトエラーをポップアップアラートに表示する方法? のフォローアップです。
<script type="text/javascript">
window.onerror = function(msg, url, linenumber) {
alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
return true;
}
</script>
私はそれを試してみて、このような道場のエロスを見つけました:
TypeError: this.canvas is undefined dojo.js (Row 446)
私の質問につながるこの方法を使用して報告されていません:
window.onerror
(特にdojoエラー)を使用してalljavascriptエラーを報告するにはどうすればよいですか?
Dojoが適切なエラー処理メソッド(つまり、try-catchブロック)を使用していて、例外が発生して、エラーハンドラーを登録したウィンドウコンテナーに到達しないようにしている可能性があります。
もしそうなら、isこれを行う方法はありません。エラーはcatchブロックを通過しないため、エラーハンドラーは呼び出されません。
コメントで指摘されているように、Venkmanフックなどのブラウザ固有のデバッグAPIを使用して、エラー時のブレークを実行することもできます-通常は特権コードに対してのみ機能するソリューションです(@Sam Hanesに感謝します)。
On(require, 'error', function () {});
を実行して、DOJOの非同期スクリプトローダーにエラー処理を追加することもできます-@buggedcomのコメントで言及されている別のポイント
より良い解決策は、try/catchを使用することです。
try{
if(a=='a'){
}
}catch(e){
alert(e);
//or send to server
new Image().src='errorReport.php?e='+e;
}
Google Plusはこれを使用しているようです。
次のようなコードを書くことができます:
var goErrHandler=window.onerror;
goErrHandler= function(msg, url, linenumber) {
console.log('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);
return true;
}
goErrHandler();
コンソールには次のようなものが表示されます:
Error message: undefined
URL: undefined
Line Number: undefined