0

コード:

p_initJQuery();

function p_initJQuery() {
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/1.4.2/jquery.min.js")
    script_tag.onload = punctis_load_box;
    script_tag.onreadystatechange = function() {
        if (this.readyState == 'complete' || this.readyState == 'loaded') punctis_load_box();
    }
    document.getElementsByTagName("head")[0].appendChild(script_tag);
} else {
     punctis_load_box();
}
}

function punctis_load_box() {
    $(".punctis-social-box").html(typeof jQuery);
}

このコードは、ロードされていない場合は何も知らないページに挿入されることを意図しているため、サイトを制御している私はまだjqueryをロードしていません。これは私のテスト サイトでは正常に動作していますが、別のより複雑なサイトで試してみると、 Uncaught TypeError: Property '$' of object [object Window] is not a functionで失敗します。

何が起こっているのかわかりません。

4

1 に答える 1

1

以前に定義されたjQueryがない場合、コードはjQueryをロードしますが、サイトにはすでにjQueryがあります。

(ワードプレスのテーマに含まれていると思います)

したがって、オブジェクトを使用できjQueryます。を使用できない場合は$、jQuery が「非競合モード」にあるためです。

http://api.jquery.com/jQuery.noConflict/

jQueryの代わりに使用する$か、再定義$してくださいwindow.$ = jQuery.noConflict();

于 2013-01-12T13:18:34.843 に答える