javascript - 已位于底部的文件的 defer 属性
问题描述
由于浏览器从上到下读取文件,如果 js 文件位于底部,那么使用 defer 属性有什么意义?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>some title</title>
</head>
<body>
<h1>hello world</h1>
<img src=">
<script defer src="defer-script.js"></script>
</body>
</html>
默认情况下,Web浏览器不应该在解析脚本之前解析h1和图像吗?这个例子中的 defer attr 有什么意义,或者浏览器将如何解析 html 文件。
解决方案
根据文件
具有 defer 属性的脚本将阻止 DOMContentLoaded 事件触发,直到脚本加载并完成评估。
defer 属性对模块脚本没有影响——默认情况下它们会延迟。
具有 defer 属性的脚本将按照它们在文档中出现的顺序执行。
所以解析将与下一个逻辑
defer 属性告诉浏览器不要等待脚本。相反,浏览器会继续处理 HTML,构建 DOM。该脚本“在后台”加载,然后在 DOM 完全构建后运行。
推荐阅读
- facebook - 作为页面发布到 Facebook 群组
- google-cloud-platform - googleapi:错误 403:资源上的权限“cloudfunctions.functions.create”被拒绝
- python - 假设每一行都有这两个值,如何获取列的两个值的百分比
- python-3.x - Python 嵌套 for 循环而不是 itertools
- python - 列表索引超出范围 - 如何解决这个问题?
- javascript - 如何在 jquery 或 javascript 中的某个变量下从 firebase 接收数据
- python - sympy 解决函数给出错误的结果
- c# - 从 CryptoStream 读取文件内容而不写入文件
- asynchronous - 使用 async/await 生锈 lazy_static?
- javascript - 如何在前端使用带有 TypeScript 的 3rd 方库?