2009-08-30 3 views
5

window.error에 이벤트 리스너를 추가 할 수 있음을 알고 있습니다.모든 iframe에서 JavaScript 오류를 catch하는 방법 (window.error 포함)?

그러나 Iframe으로 작업 할 때 각 iframe에는 자체 창 요소가 있으며 마다 window.error을 만들어야합니다.

오류 이벤트 처리기를 모든 위치에서 정의 할 수 있습니까? 모든 오류는 이 특정 메서드를 트리거할까요?

답변

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를 사용하여 페이지에서 모든 iFrame을 잡고 부모 윈도우에 등록 된 함수를 가리 키도록 .error 핸들러를 등록하십시오.

PS : 자바 스크립트 오류 처리의 주제에있는 동안 또한, 이것은 꽤 멋지다 :이 작동 할 수 https://damnit.jupiterit.com/

관련 문제