2

サーバー側にアクセスできないプラットフォーム内で作業しています。つまり、javascript ファイルを head に直接ロードすることはできず、body のみをロードできます。

これが私の負荷のやり方です:

function loadjscssfile(filename, filetype){
//http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml
    if (filetype=="js"){ //if filename is a external JavaScript file
        var fileref=document.createElement('script')
        fileref.setAttribute("type","text/javascript")
        fileref.setAttribute("src", filename)
    }
    else if (filetype=="css"){ //if filename is an external CSS file
        var fileref=document.createElement("link")
        fileref.setAttribute("rel", "stylesheet")
        fileref.setAttribute("type", "text/css")
        fileref.setAttribute("href", filename)
    }
    if (typeof fileref!="undefined")
        document.getElementsByTagName("head")[0].appendChild(fileref)
    }
}

loadjscssfile('https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js','js');
loadjscssfile('http://redacted.com/data.php?rand='+Math.random(),'js');
loadjscssfile('https://raw.github.com/aakilfernandes/jquery.inject/master/jquery.inject.js?rand='+Math.random(),'js');

ただし、ロードする 3 番目の JavaScript ファイル (jQuery プラグイン) には jQuery が必要です。

ページをロードすると、このエラーが発生します(Chromeで)

Uncaught ReferenceError: jQuery is not defined

私の傾向は、プラグインが jQuery の前に読み込まれるということです。ページを更新すると(jQueryがキャッシュされている場合)、エラーが消えるためです。ただし、jQuery がキャッシュされていない場合でも、これが機能する必要があります。考え?

4

3 に答える 3

1

これはエレガントなソリューションではありませんが、私にとっては常に機能します。jquery.min.jsファイルのコンテンツをHTMLページに直接コピー/貼り付けます

    <script> ... </script>
于 2012-06-19T15:48:12.277 に答える
0

私がすることはこれです

if (typeof $ === 'undefined') {
    document.write("<script src='//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'><\/script>");
    var timeout = 0;
    while (typeof $ === 'undefined' && timeout++ < 100);
}

これは、jquery がロードされるまで待機してから、他の処理に移ります。次に、プラグインをロードします。

于 2012-06-19T15:43:29.790 に答える