动态加载jQuery仅在某些站点中失败

时间:2013-01-12 13:07:17

标签: javascript jquery

代码:

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,因为这个代码是插在我不知道的页面上,如果没有加载,它会加载它。这在我的test site上运行正常,但是如果我在另一个complex one上尝试它,它会因 Uncaught TypeError而失败:对象[对象窗口]的属性'$'不是函数

我不清楚最新情况。

1 个答案:

答案 0 :(得分:1)

如果以前没有定义过jQuery,你的代码会加载jQuery,但你的站点已经有了jQuery。

(我认为它包含在你的wordpress主题中)

因此您可以使用jQuery对象。如果你不能使用$,那是因为jQuery处于'无冲突模式'。

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

只需使用jQuery代替$$重新定义window.$ = jQuery.noConflict();