从另一个脚本文件加载JS包含时如何进行成功回调

时间:2011-12-09 05:15:46

标签: javascript jquery callback include dynamic-loading

我有遗留的网络应用情况,我无法从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 ready函数?谢谢,

修改

使用Mike的代码,几乎所有浏览器都使用 onload IE 8或更早版本以及其他需要 onreadystatechange 的浏览器我想

JSFIDDLE HERE:

http://jsfiddle.net/BmyGC/

2 个答案:

答案 0 :(得分:2)

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");
    }
 }

答案 1 :(得分: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();