Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 确实<;链接>;标记入<;车身>;延迟加载的事件?_Css_Domparser_Domcontentloaded - Fatal编程技术网

Css 确实<;链接>;标记入<;车身>;延迟加载的事件?

Css 确实<;链接>;标记入<;车身>;延迟加载的事件?,css,domparser,domcontentloaded,Css,Domparser,Domcontentloaded,我试图理解在“head”v/s下放置“link”标签在“body”下放置对DomContentLoaded事件计时的影响。 我观察到,当'head'下有'link'时,DomContentLoaded会在DOM准备就绪后立即触发,而当'body'下有'link'时,则会在下载并解析CSS文件后触发事件。 所以,我想知道为什么当“link”在“body”下时,DOMContentLoaded会花费时间 <!DOCTYPE html> <html> <head>

我试图理解在“head”v/s下放置“link”标签在“body”下放置对DomContentLoaded事件计时的影响。 我观察到,当'head'下有'link'时,DomContentLoaded会在DOM准备就绪后立即触发,而当'body'下有'link'时,则会在下载并解析CSS文件后触发事件。 所以,我想知道为什么当“link”在“body”下时,DOMContentLoaded会花费时间

<!DOCTYPE html>
<html>

<head>
  <title>Rendering Understanding</title>
</head>

<body>
  <link rel='stylesheet' href='/stylesheets/style1.css' />
  <hr>
  <h2>
    Hello World!
  </h2>

</body>
</html>

渲染理解

你好,世界!
我做了一些分析,在chrome(76.0.3809.100)中发现了以下观察结果:-

什么时候阻止HTML解析

  • 当在head标记或body标记下遇到脚本标记时,html解析器将停止解析,请求的脚本将从网络中获取,控制将转到JS egine。脚本将被解析,然后执行,之后控件将返回到HTML解析器。因此,当再次开始解析时,完整的HTML被解析;DOM将准备就绪,并且将触发“DomContentLoaded”加载事件
  • 当在“body”标记中再次遇到链接标记时,HTML解析将被阻止,直到从网络获取请求的样式表并创建CSSOM为止。在完成此活动后,控件将再次返回到HTML解析器,如果这一次完成了HTML解析;DOM将准备就绪,并且将触发“DomContentLoaded”加载事件

注意-链接标记放置在“head”标记内时不会阻止HTML解析器,但放置在“body”标记内时会阻止HTML解析。因此,触发DomContentLoaded事件需要时间,因为此时完整的DOM尚未就绪。

我做了一些分析,在chrome(76.0.3809.100)中发现了以下观察结果:-

什么时候阻止HTML解析

  • 当在head标记或body标记下遇到脚本标记时,html解析器将停止解析,请求的脚本将从网络中获取,控制将转到JS egine。脚本将被解析,然后执行,之后控件将返回到HTML解析器。因此,当再次开始解析时,完整的HTML被解析;DOM将准备就绪,并且将触发“DomContentLoaded”加载事件
  • 当在“body”标记中再次遇到链接标记时,HTML解析将被阻止,直到从网络获取请求的样式表并创建CSSOM为止。在完成此活动后,控件将再次返回到HTML解析器,如果这一次完成了HTML解析;DOM将准备就绪,并且将触发“DomContentLoaded”加载事件

注意-链接标记放置在“head”标记内时不会阻止HTML解析器,但放置在“body”标记内时会阻止HTML解析。因此,触发DomContentLoaded事件需要时间,因为此时完整的DOM还没有准备好。

因为DOM中的头在体之前,所以首先加载它的内容。同样,页脚中的内容也是最后加载的。@CarolMcKay,但我不明白的是为什么DomContentLoaded事件等待CSS解析!据我所知,当“body”标记DOMContentLoaded事件中没有同步脚本时,它不会等待CSSOM的创建,并在HTML解析完成且DOM就绪后立即触发。对不起,我现在理解了您的问题,我们从来没有遇到过它,因为在DOM中头部在身体之前,它的内容首先被加载。同样,页脚中的内容也是最后加载的。@CarolMcKay,但我不明白的是为什么DomContentLoaded事件等待CSS解析!据我所知,当“body”标记DOMContentLoaded事件中没有同步脚本时,它不会等待CSSOM创建,并在HTML解析完成且DOM就绪后立即触发。对不起,我现在理解了您的问题,我们从未遇到过它。