javascript - 如果设置了 type="module",为什么 childNodes 在 connectedCallback 中返回不同的值?
问题描述
调用this.childNodes
自定义元素connectedCallback
将返回不同的值,具体取决于是否type="module"
在脚本标记中设置。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script>
class CustomElement extends HTMLElement {
connectedCallback() {
console.log(this.childNodes);
}
}
customElements.define('custom-element', CustomElement);
</script>
</head>
<custom-element><div></div></custom-element>
</html>
在我的浏览器中,记录了以下内容,表示有 0 个子节点:
NodeList []
但如果我type="module"
在脚本标签中设置,则会记录 1 个子节点:
NodeList [ div ]
我能够在 Firefox 90 和 Chrome 92 上复制这种行为。
为什么设置type="module"
会改变返回值childNodes
?
解决方案
因为模块强制脚本在整个 DOM 被解析后运行。
在 SO 上搜索 settimeout 和 connectedcallback
推荐阅读
- powershell - 从多台远程计算机卸载程序并生成报告
- linux - 杀死正在运行的 docker 容器后进行清理
- flutter - 更改列表视图中的单个项目
- c - 在 gcc 中使用嵌套循环时 printf 不起作用
- php - 如何用join计算mysql?
- docker - 我应该使用 systemd 还是 docker-compose 来保持 Docker 容器在我的系统上运行?
- r - TERR 中的 TryCatch 处理
- c# - 带有 .Net Core API 的 Docker
- amazon-web-services - 使用 AWS AppSync 中的列表查询 DynamoDB
- tableau-api - Tableau - 更好地使用表格计算或向数据提取添加新维度?