javascript - HTML Shadow dom : why does attachShadow(. ..).insertAdjacentHTML 不起作用,但 AttachShadow(...).innerHTML 起作用吗?

标签 javascript html shadow-dom

为什么以下两项有效:

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

https://jsfiddle.net/uzdy3fv9/

最佳答案

当你这样做时

document.body.innerHTML = '<div>Test1</div>';
document.body.insertAdjacentHTML('beforeEnd', '<div>Test2</div>');

您正在调用 Element.prototype 上的方法。

影子根不是元素 - 它们在某些方面相似,但并不相同。暗影根have certain methods/properties ,包括 .innerHTML,但不包括 .insertAdjacentHTML

(这是有道理的... .insertAdjacentHTML('afterend''beforebegin' 对于影子根来说意味着什么?影子根不是一个容器)

关于javascript - HTML Shadow dom : why does attachShadow(. ..).insertAdjacentHTML 不起作用,但 AttachShadow(...).innerHTML 起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66665984/

相关文章:

javascript - ng-dropdown-multiselect 库不适合我

Javascript - 如何使用变量分隔符进行分割功能?

html - 如何使用 twitter 的 typeahead 实际提交数据

jquery - 如何让 CSS 类多次出现在屏幕上

javascript - HTML5=HTML+CSS+Javascript吗

javascript - Webcomponents Polyfill 不工作

javascript - 如何将复选框输入传递给 shinyServer() 中的函数

java - Phonegap 设备就绪事件

javascript - polymer 元素未从字符串/文本注册到 polymer 中

javascript - Shadow-root 兄弟元素在 attachShadow() 调用时消失