2012-05-23 2 views
0

try/catch 블록 내에서 execScript를 사용하여 문자열 화 된 JavaScript를 실행하고 있습니다. 문자열에 자바 스크립트 오류가있는 경우 execScript는 IE 8의 catch 블록에서 다음과 같은 페이지를 다시로드 할 때 다음 오류를 반환합니다.IE8에서 try/catch oddity 시도

'오류 : 80020101 오류로 인해 작업을 완료 할 수 없습니다.'

위와 같은 일반적인 오류가 발생하지 않는 IE 8에서 JavaScript를 전역 적으로 평가하는 다른 방법이 있습니까? 나는 그것이 글로벌 컨텍스트에서 자바 스크립트를 평가하지 않기 때문에 eval을 사용하는 것이 효과가 없다는 것을 안다.

// fn is defined somewhere above this code 

function globalEvaluation() { 
    if(document.defaultView) { 
     document.defaultView.eval.call(undefined, fn); 
    } else if (document.parentWindow) { 
     document.parentWindow.execScript(fn); 
    } 
} 

return function() { 
    try { 
     globalEvaluation(); 
    } catch(e) { 
     // do some error handling 
     // in IE 8 I get the 80020101 error 
    } 
} 

답변

0

내가 IE의 스크립트 엔진이 무효 자바 스크립트가 발생하면이 오류가 발생할 본 적이 (내 최근 : 아래

내 코드가 어떻게 생겼는지에 관해서는 몇 가지 설정하고, FN 평가되어야하는 문자열입니다 예 : 잘못된 javascript 또는 COM을 통해 SHDocVw.dll을 통해 존재하지 않는 함수를 직접 호출하려고 시도하는 경우). 그래서 나는 IE8에서 평범하다는 것을 당신이 무언가를 무언가에게 먹이고 있다고 생각하고, 무엇을 막론히 질식시킬 것이라고 말하는 오류 메시지를 해석합니다.

문제 일 수 있습니까? IE 8 defaultView equivalentdocument.defaultView.eval.call가 여전히 IE9에서 나에게 잘 작동하는 것처럼 보입니다.

내 생각에 fn에 버그가있는 것 같습니다. 아직 범위가 벗어났습니다. 무효하다고 판단되는 부분을 전달하면 항상 도움이되지 않는 오류가 발생합니다. fn은 자체의 null 검사/오류 처리를 수행합니까?