javascript - HTML Shadow dom:为什么 attachShadow(...).insertAdjacentHTML 不起作用但 attachShadow(...).innerHTML 起作用?
问题描述
为什么以下两个工作:
document.body.innerHTML = '<div>Test1</div>';
document.body.insertAdjacentHTML('beforeEnd', '<div>Test2</div>');
这也有效:
document.body.attachShadow({mode: 'open'}).innerHTML = '<div>Test3</div>';
但以下不起作用:
document.body.attachShadow({mode: 'open'}).insertAdjacentHTML('beforeEnd', '<div>Test4</div>');
它给出了错误Uncaught TypeError: document.body.attachShadow(...).insertAdjacentHTML is not a function
解决方案
当你这样做
document.body.innerHTML = '<div>Test1</div>';
document.body.insertAdjacentHTML('beforeEnd', '<div>Test2</div>');
您正在调用Element.prototype
.
影根不是元素——它们在某些方面是相似的,但它们并不相同。影子根具有某些方法/属性,包括.innerHTML
,但不包括.insertAdjacentHTML
。
(这是有道理的……影子根是什么.insertAdjacentHTML('afterend'
意思'beforebegin'
?影子根不是容器的一部分)
推荐阅读
- python - 从python中的矩阵中提取一列
- flutter - 为什么使用 context.select 代替 context.watch 会导致范围错误?
- solidity - 在测试网上使用 Remix 部署合约时出现问题
- javascript - 需要角度反应形式切换验证?
- reactjs - 如何从material-ui控制TablePagination
- python - 从python中的列表项末尾删除空格
- python - 我得到一个 matmul:输入操作数 1 不匹配...错误...正文中的完全错误
- python - 如何以编程方式将反斜杠引号转换为双反斜杠引号?
- url - 如何在 scss 文件中调用像“http://...”这样的 url?
- javascript - 如何使用 ARGS[] 在 discord.js v12.5.3 中编写 clear 命令