标签:nonblocking browser javascript
阅读how browser works和浏览器rendering process之后,遇到< script>脚本时,我仍然对浏览器解析过程感到困惑标签,这些帖子并未真正覆盖.
下图描述了主要过程:
假设我们有一个简单的html
<html>
<head>
<link rel="stylesheet" href="main.css">
<script src="main.js"></script>
<link rel="stylesheet" href="another.css">
</head>
<body>
</body>
</html>
问题:
>浏览器是单线程,因此HTML解析器和CSS解析器如何并行工作
>在HTML解析器中,遇到< script>标签,浏览器会在下载js文件并执行完毕之前停止吗?对于此示例,在main.js下载并执行之前,浏览器将不会下载another.css?
解决方法:
1:浏览器不是单线程的,如果您关注任务管理器,您会发现浏览器实际上使用了多个线程.我认为浏览器为htmlpage保留了1个线程,并创建了一个新线程/重用线程来获取图像,css和js,从而不会阻塞主要的html线程.
2:当HTML解析器遇到< script src =“ main.js”>< / script>标记,它将main.js下载到客户端并执行它能找到的所有js代码.
通常,停止js的执行符合您的最大利益.
这就是为什么您通常将所有js功能都放入函数中,并拥有一个init或load函数,当htmlpage上的所有元素都被加载时会触发js的原因.
您可以通过在主体上附加一个事件侦听器来实现此目的.
< body onl oad =“ load()”>其中load()是main.js中的一个函数
看看这个:Link
标签:nonblocking,browser,javascript 来源: https://codeday.me/bug/20191030/1966470.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。