2013-04-16 4 views
-3

에 jQuery를로드 할 때 나는 다음과 같이 동적으로 jQuery를로드 할 수있는 프로젝트를 가지고 :`.noConflict()`비동기 적으로 IE

(function() { 

    var scriptOnLoad = function() { 
    jQuery.noConflict(); 

    // Do my stuff here 
    }; 

    var script = document.createElement('script'); 
    script.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"; 
    script.onload = scriptOnLoad; 
    script.onreadystatechange = function() { 
    if (script.readyState == 'loaded' || script.readyState == 'complete') 
    scriptOnLoad(); 
    }; 
    document.getElementsByTagName('head')[0].appendChild(script); 
})(); 

이 사이트는 또한 사용하여 적용해야한다 프로토 타입을 사용 .noConflict().

그러나 IE9에서는 변수 $을 사용하는 다른 JS 코드 (광산이 아니고 제어 할 수 없음)가 Prototype의 기능 대신 jQuery로 설정되기 때문에 가끔씩 발생합니다.

타이밍 문제라고 생각하고 IE가 jQuery 로딩과 readystatechange 이벤트 처리기 실행 사이에 다른 JavaScript를 실행한다고 가정합니다. 이 경우 누구나 확인할 수 있습니까?

어떻게 해결할 수 있습니까? 내가 생각할 수있는 유일한 것은 $을 처음 덮어 쓰지 않는 jQuery의 수정 된 복사본을 사용하는 것입니다.

+0

왜 갑자기 downvotes? – RoToRa

답변

-2

잘 모르겠지만 $ j = jQuery.noConflict()와 같은 변수에서 jquery를 초기화하고 코드에 $ j를 사용할 수 있습니다.

+0

그건 문제가되지 않습니다. $를 사용하는 다른 코드는 프로토 타입을 예상 할 때 jQuery를 가져옵니다. – RoToRa

0

jquery와 jQuery.noConflict()를 연결할 수 있습니다. 하나의 단일 파일에로드하고 스크립트를로드하지 않고이 핸들러를로드하십시오.

관련 문제