美文网首页
head中js文件的加载(下载)对于DOM构建的影响

head中js文件的加载(下载)对于DOM构建的影响

作者: FConfidence | 来源:发表于2018-03-07 19:06 被阅读61次
    1. html代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Document</title>
      <script src="./head_script.js"></script>
       <meta name="test" content="123">
    </head>
    <body>
      <h2>Test</h2>
    </body>
    </html>
    
    1. head_script.js
    console.log('html: ',document.documentElement.innerHTML) // html
    
    var liNode = document.createElement('li');
    liNode.innerHTML = "li node"
    document.head.appendChild(liNode)
    console.log('head: ',document.head.innerHTML)
    console.log('body: ',document.body)
    for (var i = 0; i < 100000000; i++) {
    }
    setTimeout(function() {
        console.log('-------------head srcipt-------------------')
        console.log('html: ',document.documentElement.innerHTML)
        console.log('head: ',document.head.innerHTML)
        console.log('body: ', document.body.innerHTML)
    }, 0)
    
    1. 运行结果


      结果分析
    1. 结果分析
      • dom构建的时候, 在碰到script的时候, 会等待js脚本的下载, 然后执行脚本完毕后, 继续构建dom操作
      • 上述结果是在没有给脚本加上defer或者async的情况下
      • DOM构建完成的时候, 所有的脚本应该下载且执行了 (区分DOMContentLoaded, onload情况)
        即 js的下载和执行会阻塞Dom树的构建(严谨地说是中断了Dom树的更新),所以script标签放在首屏范围内的HTML代码段里会截断首屏的内容。

    相关文章

      网友评论

          本文标题:head中js文件的加载(下载)对于DOM构建的影响

          本文链接:https://www.haomeiwen.com/subject/ntdsfftx.html