如何知道JQuery是否已经完成加载

在某些情况下,我需要使用这样的一个JavaScript加载jQuery:

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

但是我怎么知道JQuery已经完成加载以便我可以使用它。

您必须编写代码来检测何时加载动态加载的脚本,并且遗憾的是,它在某些旧版浏览器中的工作方式略有不同,因此它并不是那么简单。 这是一篇关于如何做到这一点的好参考文章: http : //www.ejeliot.com/blog/109

这是该文章的一些代码:

 function loadScript(sScriptSrc, oCallback) { var oHead = document.getElementsByTagName('head')[0]; var oScript = document.createElement('script'); // make sure callback isn't run more than once function runCallback() { if (oCallback) { oCallback(); oScript.onload = oScript.onreadystatechange = null; oCallback = null; } } oScript.type = 'text/javascript'; // most browsers oScript.onload = runCallback; // IE 6 & 7 oScript.onreadystatechange = function() { if (this.readyState === 'complete') { runCallback(); } } oScript.src = sScriptSrc; oHead.appendChild(oScript); } 

或者,您可以使用其中一个为您工作的小库。 您可以在此处查看其中一些列表: http : //microjs.com/#loader 。 虽然我不确定您是否想要使用另一个库来协助加载主库。

尝试onload事件:

  //..... script.onload = function(){ alert('jQuery is loaded succesfully'). }; script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"; 

感谢jfriend的回答。 回调很性感。

第二次破解它。

 function loadJQ(callback) { if(!window.jQuery) { // Create jQuery script element. var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'path/to/jquery.js'; document.body.appendChild(script); script.onload = function(){ callback(jQuery); }; // IE 6 & 7 ala jfriend00 script.onreadystatechange = function() { if (this.readyState == 'complete') callback(jQuery); } } else { callback(jQuery); } } 

调用

 loadJQ(function($){ alert($ === jQuery); // true. jquery is loaded. }); 

你可以放入代码

 $(document).ready(function() { // Handler for .ready() called. }); 

以下是文档: http : //api.jquery.com/ready/

编辑:猜猜我错了。 所以我无法回答如何看待它的加载,但可以提供另一种加载lib的方法。

    

在这里,如果google api不可用,则会加载本地版本的jQuery。 比上面的snipped应该足够安全知道jQuery被加载了。