2009-08-30 1 views
5

window.errorのイベントリスナーを追加できることはわかっています。すべてのIframeのJavaScriptエラーを(window.errorを使用して)どのように捕捉するのですか?

しかし、Iframeで作業する場合、それぞれiframeに独自のウィンドウ要素があり、iframeごとにwindow.errorを作成する必要があります。

何らかの理由で、すべてのエラーが がこの特定のメソッドをトリガーするエラーイベントハンドラを1か所に定義できますか?

答えて

5

function myHandler(msg, url, line){ 
    //do stuff here... 
} 

//hook in all frames... 
function addErrorHandler(win, handler){ 
    win.onerror = handler; 
    for(var i=0;i<win.frames.length;i++){ 
    addErrorHandler(win.frames[i], handler); 
    } 
} 
//start with this window... and add handler recursively 
addErrorHandler(window, myHandler); 
+0

ありがとうございます。私のアプリには完璧ではないようだが、IFrameとウィンドウは私がなしには飛行機で作成されているので、 の多くを制御できるので、すべての勝利オブジェクトを事前に知ることはできない。 IEウィンドウでグローバルエラー処理方法がないと思いますか? ありがとう、 Tal。 – Tal

+0

ああ、その場合は...あなたが作成するすべてのフレームに、ちょうど追加... window.onerror = top.myHandler; – scunliffe

+0

はい...しかし、私はIframeのソースとなるものを事前に知りません。 (ターゲットIFrameへのフォーム送信を使用) - window.onerrorはIFrameコード自体の中になければなりません。 – Tal

2

私はこれを試していないので、私のために私を掛けてください:-) すべてのiframeを保持しているマスター/親ウィンドウにエラーハンドリング機能を作成することができます。次に、jQueryを使用してページ内のすべてのiFramesを取得し、親ウィンドウに登録された関数を指すように.errorハンドラを登録します。

PS:javascriptのエラー処理の話題であったがまた、これもかなりクールです:これはうまくいくかもしれないhttps://damnit.jupiterit.com/

関連する問題