添加了insertBefore (async=false)的脚本接下来会加载吗?

Will a script added with insertBefore (async=false) loaded next?

本文关键字:接下来 脚本 加载 insertBefore async false 添加      更新时间:2023-09-26

让我们假设我把这个脚本直接放在开始的头部标签之后:

(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维持秩序。