【发布时间】:2011-10-30 20:59:45
【问题描述】:
我确定我没有完全理解这个问题,但 似乎 我们在我的项目中看到了 IE9 上的奇怪行为,这在某种程度上与 JavaScript 的无序执行有关通过调用document.write 注入,例如:
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>');
我有限的 Google 研究表明,IE9 将以不同于其他浏览器(特别是 Firefox 和 Chrome)的顺序执行以这种方式注入的脚本。有没有更好的方法来实现我们在这里的目标,这将确保所有浏览器的执行顺序相同?
我收回这一点:我们并不真正关心所有浏览器,只关心 Chrome 和 IE9。
【问题讨论】:
-
(大声思考):不知道在IE9中用
document.write()将脚本插入DOM是非阻塞操作吗? -
(也大声思考):是否可以为每个注入的标签添加
defer属性?我不知道它会产生什么影响(如果有的话),但是如果脚本当前正在按照它们完成下载的顺序(即最小/最快的主机首先)而不是它们被声明的顺序进行评估,添加@987654325 @ 可能会迫使他们堆叠。也许吧。 -
我敢肯定。它是一种被广泛接受的非阻塞 JavaScript 调用解决方案。
-
@Flambino:我对
defer属性了解不多,但实际上我确实尝试过,但似乎并没有解决问题。
标签: javascript internet-explorer google-chrome labjs javascript-injection