Javascript内联脚本和延迟脚本的执行顺序

时间:2018-08-22 08:45:52

标签: javascript

我对混合脚本类型的执行顺序有疑问。

这是我的代码:

    <script>
        if(document.documentMode) {

            const firstScriptInDOM = document.getElementsByTagName('script')[0];
            const polyfill = document.createElement('script');
            polyfill.src = "/static/js/polyfills/polyfills.js";
            firstScriptInDOM.parentNode.insertBefore(polyfill, firstScriptInDOM);
        }
    </script>

    <script src="static/js/lib1.js" defer></script>
    <script src="static/js/lib2.js" defer></script>
    <script src="static/js/lib3.js" defer></script>
    <script src="static/js/myOwnScriptFile.js" defer></script>

第一个脚本标签的目的是,如果浏览器是IE,则为IE加载polyfill。 然后,它应该加载其他脚本并执行我的代码。

我的问题是: polyfills脚本会阻止执行延迟的脚本吗?

非常感谢您的时间!

1 个答案:

答案 0 :(得分:1)

未延迟的脚本将在解析时运行。 将在触发DOMContentLoaded之前,按照文档在文档中显示的顺序解析文档后执行其他脚本。

更新

Kaiido是正确的,我的结论是错误的。 脚本中添加了polyfill的部分将首先运行,但是一旦下载,加载的脚本将异步运行。 您可以查看更多详细信息here

您可以改用document.write