3

CDNでホストされているjQueryをロードすることをお勧めしますが、ローカルファイルにフォールバックすることをお勧めします。たとえば、HTML5ボイラープレートは次のようになります。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.0.min.js"><\/script>')</script>

しかし、XHTMLで同じことをどのように実装できますか?適切なXHTML(としてdocument.write()送信)では機能しないapplication/xhtml+xmlので、別の方法はありますか?

4

3 に答える 3

3

このコードは新しい<script/>要素を作成し、ページの最初の<script/>要素の前に追加します。

if (!window.jQuery) {
   var script = document.createElement('script');
   script.type = 'text/javascript';
   script.src = 'js/vendor/jquery-1.8.0.min.js';

   var firstScript = document.getElementsByTagName('script')[0];
   firstScript.parentNode.insertBefore(script, firstScript);
}
于 2012-09-02T11:21:03.810 に答える
0

createElement、、通常どおりsetAttribute、またはappendChilddocument.writeinnerHTML

于 2012-09-02T11:17:46.783 に答える
0

Maxim Vi。の回答を拡張して、元のアイデアに近づけて、次のように呼ばれる場所に挿入しました。

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript" id="jQuery">
if (!window.jQuery) {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = '/js/jquery-1.8.0.min.js';
    var jQueryScript = document.getElementById('jQuery');
    jQueryScript.parentNode.insertBefore(script, jQueryScript);
}
</script>

このようにして、スクリプトをフッターに保持できます(ページ内に他のスクリプトがある場合、スクリプトが早すぎたり、別の場所に挿入されたりすることはありません)。

編集:私はその解決策でいくつかのブラウザで問題を抱えていましたが、id="jQuery"さらに下に移動すると問題が解決しました。それに応じてコードを調整しました。

于 2012-09-02T11:42:23.217 に答える