其中动态加载的alert.js文件中内容为:alert('in alert.js'); 经过测试(ie8),可以发现弹出的内容先后为:loaded、in alert.js、complete 查资料可得ie下向DOM中添加script时有onreadystatechange事件(其它浏览器有onload事件),而事件中js.readyState的状态变化为:loading(下载中)、loaded(下载完成)、complete(代码执行完成) 从代码中可以看出我是在事件中才向DOM中添加创建的scrip结点的…… 因此可以得出ie在创建scrip结点并给src赋值时就开始有http下载了,这与其它浏览器完全不同(其它浏览器是要把script结点加到DOM中才会有http下载的),而把scrip结点向DOM树中添加后才开始执行代码。 有了这些结论我们就可以解决ie下并行下载顺序执行的问题了;有两种方案:一种是边下载边顺序执行,另一种是全下载完再顺序执行。 两种各有好处,这里给出后一种情况的代码(loader.js):
/* 来自博客园:http://www.cnblogs.com/jaiho/archive/2011/09/12/2174131.html * Author: JaiHo */ (function(window){ var DOMLoader = (function(){ var DOMLoader = function(){ return new DOMLoader.prototype.init(); }; DOMLoader.prototype = { jsList:[], js_all:0, loaded_js:0, head:document.getElementsByTagName('head')[0], init:function(){ }, create_node:function(src){ var js = document.createElement('script'); js.type = 'text/javascript'; this.bindWait(js); this.jsList[this.jsList.length] = js; js.src = src; }, loadJS:function(list){ len = list.length; for(var i=0; i
测试例子如下:
![ie下动态加态js文件ie动态加载js](/Files/20119/d2ee2cc9-c7a3-4657-9714-af257cbcfa58.jpg)
可以看出加载�3个js文件是并行下载的� 对于其它浏览器有动态加载js文件的并行下载和顺序执行问题的情况,目前还没有相对完美的解决方案(如果有了请指教一下。。),单从这个方面,个人觉得ie的这个onreadystatechange事件方案相对好些�
P.S.:转载请注明出处,谢谢!JaiHo
最新评�