2011-12-19 4 views

답변

6

이것은 zepto.js에 추가됩니다! 내가 같은 일을 찾고 있었다

;(function ($) { 
    $.getScript = function(src, func) { 
     var script = document.createElement('script'); 
     script.async = "async"; 
     script.src = src; 
     if (func) { 
      script.onload = func; 
     } 
     document.getElementsByTagName("head")[0].appendChild(script); 
    } 
})($) 
+0

fn에는 표시되지 않습니다. 또한 플러그인을 작성하고 있으므로 Zepto 기능을 사용하여 실제로 단순화 할 수 있습니다. –

+0

이론적으로 요소를 추가하거나 속성을 설정하는 데 $()를 사용하지 않는 것이 더 빠르며 메모리를 절약 할 수 있습니다. 둘 다 빠르게로드 할 때 중요 할 수 있습니다. 그래서 몇 가지 수정 사항을 추가하여 리뷰를 작성했습니다. –

+0

비동기 매개 변수를 모르거나 필요로하므로 주석을 달았습니다. 파일 시스템 대 웹을 통해로드하는 경우 속도 향상을 위해이 파일을 조사합니다. –

0

, 나는 표준 $ 아약스 호출에 응답 dataType === "script" 평가 후면 것을 발견했다. 나는 Zepto 플러그인 때문에 등을 구현 : 나는 아약스 요청에 임의의 옵션의 통과를 허용하는 options (3) 매개 변수를 추가 제외

(function ($) { 
    var getScript = function (url, callback, options) { 
      var settings = $.extend({ 
       'url': url, 
       'success' : callback || function() {}, 
       'dataType' : 'script' 
      }, options || {}); 
      $.ajax(settings); 
     }; 

    $.getScript = getScript; 
}($ || Zepto)); 

그것은 jQuery를 버전과 동일한 구문을 사용하여 작동합니다.

+1

이 방법의 한계는 상호 도메인 요청을 할 수 없다는 것입니다. 제 3 자 스크립트가 실패합니다. –

2
;(function($){ 

    $.getScript = function (url, success, error) { 
     var script = document.createElement("script"), 
      $script = $(script); 
     script.src = url; 

     $("head").append(script); 
     $script.bind("load", success); 
     $script.bind("error", error); 
    }; 

})(Zepto); 

이것은 부분적으로 Zepto.ajaxJSONP에서 찢어졌습니다.

관련 문제