首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于IE9注入脚本标记的执行顺序,有已知的解决办法吗?

对于IE9注入脚本标记的执行顺序,有已知的解决办法吗?
EN

Stack Overflow用户
提问于 2011-08-19 19:11:10
回答 4查看 5.2K关注 0票数 3

我确信我并不完全理解这个问题,但我们似乎在我的项目中看到了IE9上的奇怪行为,这与通过调用document.write注入的JavaScript的无序执行有某种关系,例如:

代码语言:javascript
复制
document.write('<scr'+'ipt type="text/javascript" src="'+file1+'"></src'+'ipt>');
document.write('<scr'+'ipt type="text/javascript" src="'+file2+'"></src'+'ipt>');
document.write('<scr'+'ipt type="text/javascript" src="'+file3+'"></src'+'ipt>');

我有限的谷歌研究表明,IE9将以不同于其他浏览器(特别是火狐和Chrome)的方式执行以这种方式注入的脚本。是否有更好的方法来实现我们的目标,这将确保所有浏览器的执行顺序相同?

我回想一下:我们并不真正关心所有的浏览器,只有Chrome和IE9。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-22 21:08:48

使用脚本加载器(如我编写的脚本加载器:LABjs),它将规范跨不同浏览器加载的所有不同的怪癖。还有好处:它没有使用可怕的document.write()。LABjs将允许异步加载所有脚本(并行),但确保它们以正确的顺序执行。听起来基本上就是你想要的。

票数 5
EN

Stack Overflow用户

发布于 2011-08-19 19:20:20

我想您可以将其中一个的onload事件链接起来,以启动另一个事件的加载:

代码语言:javascript
复制
var newJS= document.createElement('script');
newJS.onload=function() {alert("done")} //or call next load function
newJS.src="..."
document.body.appendChild(newJS)
票数 5
EN

Stack Overflow用户

发布于 2011-08-19 19:19:16

因此,以这种方式编写脚本标记的优点是,它们是异步加载。的。我不知道浏览器的细微差别是如何做到的,但我认为当它们被下载时,它们会被执行,没有具体的顺序。类似于属性的行为。

还有另一个defer,它让脚本按顺序执行,但以非阻塞的方式执行。您可以尝试将其添加到生成的<script>标记中。IE9 部分荣誉.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7126270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档