복붙노트

[JQUERY] JQuery와 동적으로 자바 스크립트 파일을로드

JQUERY

JQuery와 동적으로 자바 스크립트 파일을로드

해결법


  1. 1.예, 대신 document.write를의 getScript를 사용하는 - 그것도 파일이로드 한 번 콜백 수 있습니다.

    예, 대신 document.write를의 getScript를 사용하는 - 그것도 파일이로드 한 번 콜백 수 있습니다.

    당신은 TinyMCE에 정의 된 경우 코드는 다음과 같이 보일 수 있도록 ( '댓글 추가'에 대한 후속 호출)를 포함하기 전에, 그러나, 확인 할 수 있습니다 :

    $('#add_comment').click(function() {
        if(typeof TinyMCE == "undefined") {
            $.getScript('tinymce.js', function() {
                TinyMCE.init();
            });
        }
    });
    

    당신은 단지 한 번에 초기화 호출해야 가정, 즉. 그렇지 않다면, 당신은 여기에서 그것을 알아낼 수 있습니다 :


  2. 2.나는 (5 년 정도), 내가 늦게 조금 여기입니다 실현,하지만 난 허용 한 다음보다 더 나은 답이 있다고 생각 :

    나는 (5 년 정도), 내가 늦게 조금 여기입니다 실현,하지만 난 허용 한 다음보다 더 나은 답이 있다고 생각 :

    $("#addComment").click(function() {
        if(typeof TinyMCE === "undefined") {
            $.ajax({
                url: "tinymce.js",
                dataType: "script",
                cache: true,
                success: function() {
                    TinyMCE.init();
                }
            });
        }
    });
    

    getScript () 함수는 실제로 브라우저 캐싱을 방지 할 수 있습니다. 당신이 추적을 실행하면 스크립트가 타임 스탬프 매개 변수를 포함하는 URL이로드됩니다 볼 수 있습니다 :

    http://www.yoursite.com/js/tinymce.js?_=1399055841840
    

    사용자가 #addComment 링크를 여러 번 클릭하면 tinymce.js는 다르게 timestampped URL에서 재로드 될 것입니다. 이 브라우저 캐싱의 목적을 패배.

    ===

    또한, getScript () 문서에 다음과 같이 정의 cachedScript () 함수를 만들어 캐싱을 사용하는 방법을 보여주는 몇 가지 샘플 코드가있다 :

    jQuery.cachedScript = function( url, options ) {
    
        // Allow user to set any option except for dataType, cache, and url
        options = $.extend( options || {}, {
            dataType: "script",
            cache: true,
            url: url
        });
    
        // Use $.ajax() since it is more flexible than $.getScript
        // Return the jqXHR object so we can chain callbacks
        return jQuery.ajax( options );
    };
    
    // Usage
    $.cachedScript( "ajax/test.js" ).done(function( script, textStatus ) {
        console.log( textStatus );
    });
    

    ===

    당신은 전 세계적으로 사용하지 않도록 캐싱하려는 경우에는 다음과 같이 ajaxSetup ()를 사용하여 수행 할 수 있습니다 :

    $.ajaxSetup({
        cache: true
    });
    
  3. from https://stackoverflow.com/questions/912711/jquery-to-load-javascript-file-dynamically by cc-by-sa and MIT license