2010-03-03 3 views
3

SWFObject, jQuery 및 Google Maps API가 필요한 페이지가 있습니다. 나는 내가 사용의 이점 사용할 수 있다고 생각 :jQuery 용 Google AJAX 라이브러리 CDN

<script type="text/javascript" src="http://www.google.com/jsapi?key=INSERT-YOUR-KEY"></script> 
<script type="text/javascript"> 
    google.load("jquery", "1.4.1"); 
    google.load("swfobject", "2.2"); 
    google.load('maps', '2', {'callback': googleMapSetup }); 
</script> 

하지만 지금 어딘가에 읽기 (http://encosia.com/2008/12/10/3-reasons-why-you-should-let-google-host-jquery-for-you/) 내가 대신 $ (문서) .ready의

google.setOnLoadCallback(function() { 
    // Place init code here instead of $(document).ready() 
}); 

을 (사용해야 ) .. 사실인가요?

답변

4

Ajax Libraries API를 사용하는 방법에는 두 가지가 있습니다.

첫째로, 당신은 당신의 jQuery 파일을 호스팅하는 구글을 사용할 수 있습니다

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

둘째 당신은 당신이 언급하는 것입니다 jQuery를,의 비동기 부하를 수행하는 데 사용할 수 있습니다. 이렇게하면 패턴은이 경우에 jQuery를로드하는 비동기 그래서 당신은 준비를 문서를로드 할 수 jQuery를 기다릴 필요가 있기 때문에 당신이 google.setOnLoadCallback()를 사용할 필요가

<script type="text/javascript" src="http://www.google.com/jsapi?key=INSERT-YOUR-KEY"></script> 
<script type="text/javascript"> 
    google.load("jquery", "1.4.2"); 
    google.load("swfobject", "2.2"); 
    google.load('maps', '2', {'callback': googleMapSetup }); 
    google.setOnLoadCallback(function() { 
    $(function() { 
     // Place init code here instead of $(document).ready() 
    }); 
    }); 
</script> 

이유입니다.

로드 콜백에서 jQuery를 사용해야하는 이유는 Javascript를 실행할 때 다른 위치에로드되어 잠재적 인 경쟁 조건 및 간헐적 인 오류가 발생할 수 있기 때문입니다.

+0

네,하지만 두 번째 옵션보다 $ (document) .ready()를 더 이상 사용할 수 없습니까? – FFish

+0

@FFish :로드 콜백 외부에서'$ (function() {...} '을 수행하면 jQuery가 아직로드되지 않아서 JS 오류가 발생할 수 있습니다 .. – cletus

+0

$ (function() {}) 정확히 나는 원숭이이기 때문에 모든 코드를 doc.ready, 모든 함수 및 모든 것에 넣는다. – FFish

관련 문제