日期:2014-05-16  浏览次数:20328 次

javascript动态加载文件执行顺序和依赖的疑问???
我在a.js中当文档加载完毕后动态加载其他需要的js文件,加载文件和方法如下
JScript code

var dHeader = document.getElementsByTagName( "head" )[0];
//for循环
elem = document.createElement("link");
elem.setAttribute("rel", "stylesheet");
elem.setAttribute("type", "text/css");
elem.setAttribute("href",  srcs[i]);
dHeader.appendChild(elem);
//

dynamicInclude(['jquery.js', 'user.js']);


user.js会用到jQuery对象,比如在user.js的第一行 定义 var alias = jQuery;

问题是:
  执行页面完成时,多数时候功能正常,多刷新几次偶尔控制台报alias = jQuery中jQuery未定义的错误
感觉jquery.js和user.js都是异步执行的,搜了下说可以用ansyc和defer属性进行控制,但我试了无论怎么设置这个属性问题依然存在
  求指教!!!

------解决方案--------------------
<script src=".."></script>
这样会阻塞页面的加载

比如
<script src="jquery.js"></script>
<script src="testFN.js"></script>
那么页面会等jquery加载完毕后再加载testFN.js
这样就产生了依赖顺行.


详细的 楼主 可以 参考
http://www.slideshare.net/itchina110/labjs-7895837
------解决方案--------------------
dynamicInclude(['jquery.js', 'user.js']);
别用异步的呗。
<script src='jquery.js'></script>
<script src='user.js'></script>
如果非要用到代码中,请参考动态加载js
document.createElement然后用事件判断readyState是否加载完成再加载下一个
------解决方案--------------------
探讨
dynamicInclude(['jquery.js', 'user.js']);
别用异步的呗。
<script src='jquery.js'></script>
<script src='user.js'></script>
如果非要用到代码中,请参考动态加载js
document.createElement然后用事件判断readyState是否加载完成再加载下一个