[JS]为什么在HEAD区动态添加SCRIPT标签。js文件不会被IE下载而是被挂起

Solowave 发布于 2014/03/22 16:50
阅读 2K+
收藏 1

具体的全部代码可以在 https://github.com/latel/cookJs/blob/master/cookJs.js 查阅,line: 211 -227

var scriptNode = document.createElement("script");
    scriptNode.type = "text/javascript";
    scriptNode.async = "true";
    scriptNode.src = moduleRoot+ module+ ".js";
    scriptNode.onload = function(){
        alert("loaded");
    };
    document.getElementsByTagName("HEAD")[0].appendChild(scriptNode);





代码的大致意思,就是在head里插入一个动态生成的js标签,让浏览器去下载这个js文件

不明白为什么这样写在IE里总是 不会被下载,而是被IE显示为挂起呢,在chrome下就是(pending)的意思。

在firefox和chrome下测试是可以加载的。 IE下就一直被挂起,就是没有被下载的意思


网上也没找到这样的问题,固有此问

加载中
0
Solowave
Solowave
@陈一回  大神。能再在百忙中抽空帮我看一下吗?
0
Arrowing
Arrowing

先添加appendChild,在设置src试试

另,应该和此属性有关系

scriptNode.defer = "true";

0
金拱门
金拱门
默认异步是true,可以看看我写的uetjs,osc上有
Solowave
Solowave
拜读了您的作品,深有启发
0
gnefil.nil
gnefil.nil
实测ie8可以下载
Solowave
Solowave
回复 @gnefil.nil : JS文件当然存在了,chrome下都测试通过了
Solowave
Solowave
回复 @gnefil.nil : 完整的代码在这https://github.com/latel/cookJs/blob/master/cookJs.js
gnefil.nil
gnefil.nil
回复 @Solowave : 最好就是有完整的代码
gnefil.nil
gnefil.nil
回复 @Solowave : 是script标签不支持onload,你先试一下直接访问那个js的地址能不能下载
Solowave
Solowave
回复 @Solowave : 而且我确定没有下载,因为我可以确定要下载的文件里面的代码没有被运行。 IE的网络监视器里也说了是挂起,没有被下载
下一页
0
281165273
281165273
Async和onload都是html5的属性吧,低版本ie本来就不支持吧,直接用defer
Solowave
Solowave
onload 显然不是的吧。http://www.w3school.com.cn/jsref/event_onload.asp async 好像除了IE都是支持的
0
c
codeMentalWorker

0.0  我竟然看到了3年前的东西,我觉得这里async和defer完全没有必要,因为你的动态加载的程序是在body底部运行,这个时候页面已经加载OK了,顺序执行嘛,然后你每次调用loadScript方法加载新的js的时候完全不用等呀,页面都OK了,还用async做什么呢?你一次加载一个,也不需要并行,defer是加载完后等页面渲染OK了才执行,(动态加载完的时候页面已经渲染OK了),async是加载完后立即执行,两者对于动态添加script标签来说没有任何作用

返回顶部
顶部