3

私はブログのコードを使用しています。これは、このSOの質問に対する回答のコードと非常によく似ています。

私の問題は、コードがjQueryインクルードを問題なく配置することですが、何らかの理由で、jQueryがロードされたことを認識しなかった後のスクリプトです。私は何が間違っているのですか?

コードをjsFiddleに配置しました。

if (!window.loadjQueryOnce)
{
    function loadjQueryOnce(jQueryVersion)
    {
        jQueryVersion = typeof(jQueryVersion) != 'undefined' ? jQueryVersion : "1.7.2";

        if (typeof jQuery === "undefined") {
            var script_tag = document.createElement('script');
            script_tag.setAttribute("type","text/javascript");
            script_tag.setAttribute("src",
              "http://ajax.googleapis.com/ajax/libs/jquery/" + jQueryVersion + "/jquery.min.js")
            document.getElementsByTagName("head")[0].appendChild(script_tag);
        }
    }
}
4

3 に答える 3

2

問題は、HTMLで呼び出す前にスクリプトが実行されるのを待っていないことです。あなたが言及したブログのコードを使用するこの例を参照してください。jQueryに依存するコードをmain関数に配置する必要があります。

于 2012-05-21T15:53:29.720 に答える
1

行を上に移動しloadjQueryOnce('1.7.2')てjQueryをチェックすると、jQueryが正しく読み込まれます。 http://jsfiddle.net/JfWeG/2/ したがって、どこでチェックを行っているかはわかりませんが、コードは機能します。

依存するJSファイルをロードする前にjQueryがロードされていることを確認する場合は、jQueryのロード後に関数をロードするように関数を変更するか、jQueryを使用するすべてのスクリプトの前にjQueryのチェックを実行します。

// Load jQueryUI
if (!jQuery) loadjQueryOnce();
loadjQueryUI();

if (!jQuery) loadjQueryOnce();
loadjQueryDepedentScript();

不格好ですが、機能します。あなたがなぜこれをしているのかについてあなたが私たちにもっと良い考えを与えてくれれば、私たちはあなたをより良い解決策で助けることができるかもしれません。

最善の策は、jQueryが最初に頭に読み込まれるテンプレートを作成することです。

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        ...
    </head>
于 2012-05-21T15:50:10.283 に答える
0

タイミングの問題のようです。チェックする前に少し遅延を作成すると、正常に機能します。

<script type="text/javascript">
setTimeout(function() {
    if (typeof jQuery === "undefined") {
        alert('Not recognizing jQuery');
    }
}, 100);​
</script>

jsFiddleの例

于 2012-05-21T15:52:52.783 に答える