我对混合脚本类型的执行顺序有疑问。
这是我的代码:
<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脚本会阻止执行延迟的脚本吗?
非常感谢您的时间!
答案 0 :(得分:1)
未延迟的脚本将在解析时运行。 将在触发DOMContentLoaded之前,按照文档在文档中显示的顺序解析文档后执行其他脚本。
Kaiido是正确的,我的结论是错误的。 脚本中添加了polyfill的部分将首先运行,但是一旦下载,加载的脚本将异步运行。 您可以查看更多详细信息here。
您可以改用document.write。