window.onerrorの使い方

3092 ワード

window.onerror=function(sMessage、sUrl、sLine){}
Oneerror関数の3つのパラメータは、エラーの正確な情報を決定するために使用されます.エラーが発生したファイルエラーが発生した行番号.
例:
<br>
window.οnerrοr=fnErrorTrap;<br>
function fnErrorTrap(sMsg,sUrl,sLine){<br>
oErrorLog.innerHTML="<b>An error was thrown and caught.</b><p>";<br>
oErrorLog.innerHTML+="Error: " + sMsg + "<br>";<br>
oErrorLog.innerHTML+="Line: " + sLine + "<br>";<br>
oErrorLog.innerHTML+="URL: " + sUrl + "<br>";<br>
return false;<br>
}<br>
function fnThrow(){<br>
eval(oErrorCode.value);<br>
}<br>





 
 
jsエラーをキャプチャする時、私たちは通常try{}catch(e){}の方式を使って、e.error Messageなどでエラー情報を取得して、エラーを報告します.しかし、Oneerror事件についてはあまり質問しないかもしれません.エラーの所在をどう報告するかを考えたことがありますか?これを考えたら、この問題にも悩まされたことがありますか?jsでは間違った行番号は捕獲できないと思いますか?実は本人は上述のいくつかの問題に出会って、今日ある人の書いた1段のjsコードを読んで突然oneerror事件を発見して、oneerrorこの時間もn久前に知っていたと言えば、しかしその持っている3つのパラメーターとその特殊な性質についてずっと理解していませんでした.自分の研究テストを経て、Oneerror事件に対していくつかの新しい認識と理解ができました.ページに誤りがない時、window.onerrorイベントは存在しません.つまりnull(ナンセンス!間違いがないです.もしonerrorが現れたら正常ですか?)私達は一般的に関数名を通して伝達します.(引用の方式)実行する操作関数はwindow.οnerοr=report Errorwindow.οnerοr=function(){alert}、イベントのトリガには三つのデフォルトのパラメータが含まれていますが、それらはそれぞれエラー情報、エラーページのurlとエラー行番号です.これはイベントです.Oclickやonmouseoverなどのイベントと同じですが、パラメータがあります.私たちはこのようにテストできます.
<bragt;window.οnerοr=testError
<bragt;function testError(){
<bragt;arglen=argments.length;
<bragt;var errorMsg=「パラメータ個数」+arglen+「個」
<bragt;for(var i=0;i<arglen;i+){
<bragt;errorMsg+=「/nパラメータ」+(i+1)+「:」+argments[i];
<bragt;
<bragt;alert;
bregt;window.οnerοr=null
<bragt;return true;
<bragt;
<bragt;function test(){
<bragt;error
<bragt;
<bragt;test()
<bragt;
[Ctrl+A全選択のヒント:先にコードを修正してから実行してもいいです.]
まずtestErrer方法をオンerrorイベントに結びつけて、test方法でエラーをトリガします.IEで実行すると、以下のようなヒントがあります.
-------------
Microsoft Internet Explorer
-------------
パラメータの個数:3つ
パラメータ1:'error'は定義されていません.
パラメータ2:file://E:/yanwei/test/testError.
パラメータ3:14
-------------
を選択します
-------------
エラー時に関数testErrerが3つのパラメータに捕獲されることが分かった.関数をオンロイベントに結びつけることで、ページエラー時に上記の3つのパラメータを取り込むことができます.
テスト中に以下の問題も発見されました.
1、関数の末尾にreturn trueを加えることで、関数エラー時にシステムのエラー情報(IE)をイジェクトしないことができます.
2、ページに複数のエラーが発生した場合、最初のエラーのみをキャプチャして処理を行い、その後のプログラムの実行を終了します.
3、オンerrorイベントはすべてのエラーを捕獲することができません.関数外または関数内のエラーしか捕獲できません.(?これは何の意味ですか?冗談ではありません.)adasdfのようです.
function test(){
aaaa;
)
adasdf未定義のエラーをキャプチャすることができます.
function test(){
aaaa;
)
aaaaでは定義されていないエラーをキャプチャすることができますが、functional test(){}やfunction test()dd{}のエラーはキャプチャできず、システムエラー情報を直接ポップアップします.
4、OneerrorはIEやFFなどのブラウザで実行する方式は同じで、しかもこれらの三つのパラメータが含まれています.