2013-02-03 7 views
3

WP 프런트 엔드와 백엔드 모두에서 내 모든 스크립트 로딩에 WP 고유 함수 wp_enqueue_script()를 사용하므로 동일한 스크립트에 대한 중복 호출을 처리 할 수 ​​있습니다.오류가 발생했을 때 자바 스크립트 실행을 계속하는 방법

다른 프로그래머는이 함수를 사용하지 않고 코드에서 직접 스크립트를로드하므로 jQuery 또는 jQuery-UI가 두 번로드되어 많은 오류가 발생합니다.

다른 문제는 나 소유가 아닌 코드가 오류를 유발하고이 시점을 넘어서서 JavaScript 실행을 중단한다는 것입니다. 한마디로

:

자바 스크립트 오류가 나를 소유하지 않은 코드에서 발생합니다.
오류로 인해 내 코드가 실행되지 않습니다.
내 코드가 해당 오류를 우회하여 실행되도록하고 싶습니다.
이러한 문제를 해결할 수있는 방법이 있습니까?

+2

* 코드가 실행되는 곳에 try-catch를 넣으십시오. 그들이 이벤트에 직접 구속력이 있다면 당신은 운이 없다. – techfoobar

+0

추가하기 전에 jquery가로드되었는지 감지 할 수도 있습니다. 여기를 참조하십시오 : http://stackoverflow.com/questions/1828237/check-if-jquery-has-been-loaded-then-load-it-if-false – rsbarro

+1

반창고 솔루션은 결코 좋은 해결책이 아닙니다. 왜 두 번로드되는지 확인하고 더 이상로드하지 않는 것이 좋습니다. – rlemon

답변

4
function ShieldAgainThirdPartyErrors($) { 
    // Code you want protect here... 
} 

// First shot. 
// If no error happened, when DOMContentLoaded is triggered, this code is executed. 
jQuery(ShieldAgainThirdPartyErrors); 

// Backup shot. 
// If third party script throw or provoke an unhandled exception, the above function 
// call could never be executed, so, lets catch the exception and execute the code. 
window.onerror = function() { 

    ShieldAgainThirdPartyErrors(jQuery); 

    return true; 
} 

가) 첫 촬영에 성공했다는 신호 및 백업 샷을 피하기 위해 플래그를 설정, 나는 어떤 상황에서 첫 번째 샷이 될 수 있다고 생각 제 3 자 코드를 실행해도 문제가 발생하고 두 번째 샷이 트리거됩니다.

+0

비록 내가 깃발 신호에도 불구하고 오류에 약간의 틈을 남겨 두었 기 때문에 나는 이것을 완벽하게 수행 할 다른 방법이 없다고 생각하므로 completelly 아이디어를 좋아하지 않는다. 그래서 나는 확실히 당신의 답을 고수 할 것이다. – diosney

0

은 전혀 권장하지만 당신은 사용할 수 없음 :이 일반적으로 너무 오류를 잡을해야하지만 계속 실행 후 아무것도 수

try { 
    //Some code likely to throw an error 
} catch (err) {} 

. 오류를 잡을 수없는 유일한 경우는 배열로 작업하고 somearray[i-1] 일 때 i-1이 0보다 작은 경우입니다. 이는 조건을 사용하여이를 막는 것보다 깔끔하기 때문입니다. 당신이 필요한 경우 두 번 당신의 총의 방아쇠를 당길하려면

+0

내 코드가 나쁜 사람이라면 기꺼이'try-catch'를 사용 하겠지만, 이번에는 오류를 유발하는 다른 피어 코드가 내 로컬'try-catch'에 의해 잡힐 수 있습니다. – diosney

관련 문제