56

JS スクリプトを動的にロードしようとしていますが、jQuery を使用することはできません。

jQuery ソースをチェックしてgetScriptがどのように実装されているかを確認し、そのアプローチを使用してネイティブ JS を使用してスクリプトをロードできるようにしました。ただし、getScript は jQuery.get() のみを呼び出します。

get メソッドが実装されている場所を見つけることができませんでした。

だから私の質問は、

ネイティブ JavaScript を使用して独自の getScript メソッドを実装する信頼できる方法は何ですか?

ありがとう!

4

8 に答える 8

98

コールバック機能を備えた jQuery getScript の代替例を次に示します。

function getScript(source, callback) {
    var script = document.createElement('script');
    var prior = document.getElementsByTagName('script')[0];
    script.async = 1;

    script.onload = script.onreadystatechange = function( _, isAbort ) {
        if(isAbort || !script.readyState || /loaded|complete/.test(script.readyState) ) {
            script.onload = script.onreadystatechange = null;
            script = undefined;

            if(!isAbort && callback) setTimeout(callback, 0);
        }
    };

    script.src = source;
    prior.parentNode.insertBefore(script, prior);
}
于 2015-01-17T17:40:34.743 に答える
13

これを使って

var js_script = document.createElement('script');
js_script.type = "text/javascript";
js_script.src = "http://www.example.com/script.js";
js_script.async = true;
document.getElementsByTagName('head')[0].appendChild(js_script);
于 2013-05-30T15:09:51.727 に答える