2012-02-24 2 views
0

jQuery가 페이지 맨 아래에있을 때 모든 JavaScript를 지연시키는 가장 좋은 방법은 무엇입니까? jQuery가로드 된 후에 이미 모든 jQuery 인스턴스를 가져와서 해결했지만, <script src="file.js"></script>으로 완료된 모든 외부 참조를 선택하는 좋은 방법을 찾아야한다. <head>에서jQuery를 맨 아래에 둘 때 모든 스크립트를 페이지 맨 아래로 보내는 가장 좋은 방법은 무엇입니까?

는 :

이 페이지에있는 모든 jQuery를 기능을 잡고 및 배열에 푸시합니다.

<script> 
window.q = []; 
window.jQuery = function (f) {q.push(f)}; 
</script> 

</body>하기 전에 :

그냥 몸 전에, 나는 지역의 대체와 구글 API에서 jQuery 라이브러리를 얻을, 다음 배열의 각 jQuery를 기능을 실행합니다. 질문에

<script> window.jQuery || document.write('<script src=\"Scripts/jquery-1.7.1.js\"><\/script>') 
// after jQuery loaded 
jQuery(function() { 
    jQuery.each(q, function (index, f) { 
     f.call(document); 
    }); 
}); 
</script> 

...

그래서 나는 처음에 내 코드에 <script> 태그 무리가 있었다. 쉬운 방법은 jQuery.ajax()를 사용하여 호출하고 아래 예제와 같이 "script"를 입력하는 것입니다.하지만 더 나은 옵션에 대한 가능성을 탐구하고 싶습니다.

jQuery(function() { 
    jQuery.ajax({ 
     url: "/scripts/somescript.js", // contains myFunction(); 
     cache: true, 
     dataType: "script", 
     success: function() { 
      myFunction(); 
     } 
    }); 
}); 

주 :

  • 이 만 모든 페이지에 사용되지 않는 드문 스크립트 수행됩니다. 그것은 사이트 관리자가 켜거나 끌 수있는 위젯 컨텍스트에 있습니다. 이것이 내가 masterpage (MVC)의 jQuery 아래에 놓은 일반적인 JS의 나머지 부분과 결합하지 않는 이유입니다.

  • 몇 가지 수정 사항을 사용하여 html5boilerplate를 사용하여 이것을 설정했습니다. 그래서 실제로 Modernizr 2.0이 될 머리에 하나의 스크립트가 있습니다.

개선을위한 아이디어와 생각을 알려주세요.

감사합니다. 문서가 처음으로 jQuery를 넣어, 브라우저가 즉시 그것을 읽는 자바 스크립트를 실행 이후에만 아래로 페이지 로딩이 느려 (일명 $(document).ready()) 준비가되면 내가 바로 질문을 이해하면

+0

참고 : 첫 번째 방법은 jQuery의 연결 가능성을 깨뜨릴 것입니다. 예를 들어'$ (문서) .load (..). unload (...)' –

답변

0

,

자바 스크립트를 실행 <link href...> 한 다음 원하는 모든 자바 스크립트 코드, 그 아래의 HTML을 사용하려고 자바 스크립트 경우 (문서가 아직도 여전히로드 다운로드되기 때문에), 그것은 작동하지 않습니다

노트, 그래서 올바른 위치

에 배치
+0

예,하지만 이 (가) 차단 중입니다. 비 차단 접근법을 찾고 있습니다. – olemarius

+0

http://developer.yahoo.com/performance/rules.html#js_bottom – max4ever

관련 문제