1

我有旧版 Web 应用程序的情况,我无法从 HTML 标记中的脚本标记加载jquery.min.js。所以我必须在另一个现有脚本文件中使用一些 js 加载它

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
script.type = 'text/javascript';
head.appendChild(script);

问题是.. 当包含加载很慢时.. 有 jQuery 函数(也在页面上动态加载)尝试运行但找不到 jQuery

在 jquery.min.js 包含文件完成从 CDN 下载后,是否有一些跨浏览器方法可以在上述代码中调用 jQuery 就绪函数进行回调?谢谢,

编辑:

使用 Mike 的代码,除了 IE 8 或更早版本之外,几乎所有浏览器都可以使用onload .. 以及其他需要onreadystatechange的浏览器我猜

JSFIDDLE在这里:

http://jsfiddle.net/BmyGC/

4

2 回答 2

3

尝试

if(script.onreadystatechange)
  script.onreadystatechange = function()
  {
      if(script.readyState == "complete"  || script.readyState=="loaded")
   {
   script.onreadystatechange = false;
       console.log("complete");
   }
  }
 else
 {
    script.onload = function()
    {
        console.log("complete");
    }
 }
于 2011-12-09T05:41:46.600 回答
0

我会将基于 jquery 的代码放在另一个单独的 javascript 文件中,并以与加载 jquery.min.js 完全相同的方式加载该文件。只需在 jquery.min.js 之后立即执行此操作。那应该行得通。

编辑

好的,既然这不起作用,试试这个:

function jqChecker()
{
  if (! jQuery )
  {
    setTimeout(jqChecker, 500); // adjust as needed.
  }
  else
  {
   // insert code to dynamically load your external js file here
  }
}
jqChecker();
于 2011-12-09T05:24:20.030 回答