如何序列化包括影子 DOM 在内的 HTML DOM
How to serialize an HTML DOM including Shadow DOM?
我想将包括影子DOM树的整个HTML DOM序列化为一个字符串,即以可以重建的方式包括影子主机和影子根。
我可以通过 .shadowRoot.innerHTML 以编程方式访问 Shadow DOM,但在整个 DOM 上调用 .outerHTML 或使用 XMLSerializer 不包括 shadowRoot。
有没有办法序列化整个HTML文档,包括影子DOM树?
我想将整个HTML DOM(包括影子DOM树(序列化为 一个字符串,即以某种方式包含影子主机和影子根 它们可以重建。
请注意,shadowRoot
节点不可克隆;尽管您应该能够迭代childNodes
shadowRoot
以检索shadowRoot
中每个节点的.nodeValue
或.innerHTML
。
var elems = document.getElementById("host").shadowRoot.childNodes;
var shadowHTML = "";
for (var i = 0; i < elems.length; i++) {
shadowHTML += elems[i].nodeValue || elems[i].outerHTML;
}
或者,您可以调用链接到.treeRoot
shadowRoot
属性的.innerHTML
以检索shadowRoot
的完整html
。
var shadowHTML = document.getElementById("host").shadowRoot.treeRoot.innerHTML;
我可以通过.shadowRoot.innerHTML以编程方式访问Shadow DOM。 但在整个 DOM 上调用 .outerHTML 或使用 XMLSerializer 不包括影根。
您可以使用在.host
上调用.outerHTML
来检索document
中托管shadowRoot
元素html
。
var host = document.getElementById("host").shadowRoot.host.outerHTML;
然后可以通过创建一个<template>
元素来重建shadowRoot
,将.innerHTML
设置为变量shadowHTML
即字符串.treeRoot.innerHTML
;将新创建的template
元素附加到shadowRoot
。
相关文章:
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 将GET请求(HTML字符串)转换为完整的DOM对象
- 注入的HTML仅在Dom中解释为字符串
- HTML选择,在DOM中选择了正确的选项,但在firefox中显示了错误的项目
- DOM更改后的L20N翻译html
- 如何序列化包括影子 DOM 在内的 HTML DOM
- 创建一个HTML文件,该文件使用DOM在用户每次单击按钮时交换两段内容
- 使用 jQuery 调用 DOM HTML
- 当我认为它不应该重新渲染视图时,如何防止 Meteor 在 html 选择 dom 单击事件上重新渲染视图
- 使用 ajax 更改光滑轮播的 html 后,DOM 不会更新
- 如何选择由 DevExpress constrols 使用 Javascript DOM 技术自动生成的 html “i
- 根据DOM,HTML元素的开始和结束标记之间的内容被称为属性.这个房产的名字是什么
- 为什么这里没有应用来自模板dom的html
- 通过Java加载XML并制作HTML DOM的一部分
- 在DOM(html)上下文中使用角度作用域函数时出现的问题
- Pupulate Dom HTML fom JSON and coffeescript
- 编辑 DOM/HTML 元素
- JavaScript DOM:html 表操作问题
- 如何识别由于Chrome扩展程序而导致的DOM html代码更改
- 在iPad上捕捉点击DOM/HTML/BODY事件