如何检测动态加载时是否加载jquery

时间:2015-01-10 17:27:25

标签: javascript jquery

我尝试将jquery加载到页面,如果它没有加载。我在加载后立即运行一些代码。使用下面的代码,我试图在加载jquery时捕获它。

我的代码正确加载了jquery但没有引发onreadystatechange事件。

if(typeof jQuery=='undefined') {
    var headTag = document.getElementsByTagName("head")[0];
    var jqTag = document.createElement('script');
    jqTag.type = 'text/javascript';
    jqTag.src = 'http://localhost:8001/jquery-min.js';
    headTag.appendChild(jqTag);

    jqTag.onreadystatechange= function () {
        if (this.readyState == 'complete') {
            this.loadWidget(containerId);   
        }
    };
}
else {
    this.loadWidget(containerId);
}   

如何在加载jquery时捕获它?

2 个答案:

答案 0 :(得分:2)

脚本标记在脚本加载时有onload事件

if (typeof jQuery === 'undefined') {

    var headTag = document.getElementsByTagName("head")[0];
    var jqTag   = document.createElement('script');

    jqTag.type = 'text/javascript';

    jqTag.onload = function() {
        this.loadWidget(containerId);   
    }

    jqTag.src  = 'http://localhost:8001/jquery-min.js';
    headTag.appendChild(jqTag);

} else {
    this.loadWidget(containerId);
}   

答案 1 :(得分:1)

在我看来,你的代码太复杂了。

为什么不做HTML5样板文件所做的事情:

<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>

如果未检测到window.jQuery对象,则会优雅地故障转移以写出脚本标记以将其包含在本机Javascript中。当然,你可以改变你想要的路径。

希望这有帮助。