让我们假设我把这个脚本直接放在开始的头部标签之后:
(function () {
var a = document.createElement('script');
var m = document.getElementsByTagName('script')[0];
a.async = !1;
a.src = 'loader.js';
m.parentNode.insertBefore(a, m);
})();
我可以肯定,loader.js将在上述函数块之后执行吗?
虽然loader.js的加载是在浏览器执行的当前位置之前插入的
根据MDN:
脚本插入脚本在IE和WebKit中异步执行,但是在Opera和4.0之前版本的Firefox中同步。在Firefox 4.0中,asyncDOM属性对于脚本创建的脚本默认为true,因此默认行为匹配IE和WebKit的行为。请求插入脚本的外部脚本按插入顺序执行浏览器,其中
document.createElement("script").async
求值为true
(如Firefox 4.0),在脚本中设置.async=false
维持秩序。