jas*_*son 4 javascript browser nonblocking
在阅读了浏览器如何工作和浏览器渲染过程后,我仍然对遇到<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>
Run Code Online (Sandbox Code Playgroud)
问题:
<script>标签时,浏览器是否会停止,直到 js 文件下载并执行完成?对于这个例子,浏览器不会下载,another.css直到main.js下载并执行?小智 6
1:浏览器不是单线程的,如果你留意你的任务管理器,你会发现浏览器实际上使用了多个线程。我认为浏览器为 htmlpage 保留了 1 个线程,并创建了一个新线程/重用线程来获取图像、css 和 js,从而不会阻塞主 html 线程。
2:当 HTML 解析器遇到<script src="main.js"></script>标签时,它会将 main.js 下载到客户端并执行它可以找到的任何 js-code。
通常,停止 js 的执行符合您的最佳利益。这就是为什么您通常将所有 js 功能放入函数中,并有一个 init 或 load 函数在加载 htmlpage 上的所有元素时触发您的 js。
您可以通过将事件<body onload="load()">侦听器附加到 body.onload-event 来完成此操作,
其中 load() 是 main.js 中的一个函数
看看这个:链接
| 归档时间: |
|
| 查看次数: |
1065 次 |
| 最近记录: |