Javascript 使用document.registerElement创建自定义非HTML节点
我正在尝试序列化一些文本节点,这些节点具有需要保留在序列化表单中的自定义属性(如id) 从外观上看,最好的方法可能是使用包含自定义属性的特殊标记包装每个文本元素。例如:Javascript 使用document.registerElement创建自定义非HTML节点,javascript,custom-element,Javascript,Custom Element,我正在尝试序列化一些文本节点,这些节点具有需要保留在序列化表单中的自定义属性(如id) 从外观上看,最好的方法可能是使用包含自定义属性的特殊标记包装每个文本元素。例如: <P>some text</P> 但是当自定义文本标记被解析时,它不会创建文本节点,而是创建一个HTML节点。我使用的是Chrome33,registerement存在于文档对象中,这应该是我需要检查的全部内容。我会尝试创建一个包装该对象的函数。create调用尝试发出警报或查看它是否被击中,但我没有看
<P>some text</P>
但是当
自定义文本
标记被解析时,它不会创建文本节点,而是创建一个HTML节点。我使用的是Chrome33,registerement
存在于文档
对象中,这应该是我需要检查的全部内容。我会尝试创建一个包装该对象的函数。create调用尝试发出警报或查看它是否被击中,但我没有看到任何关于prototype值的文档。您的自定义元素应该基于HtmleElement prototype(或HtmlPanelElement prototype):
无需添加Id属性,因为它已经存在。据我所知,文本节点与元素不同,没有属性。所以我看不出
document.registerement
对您有什么帮助。我对有点困惑,我正在尝试序列化一些具有自定义属性(例如id)的文本节点@Xotic750我需要(例如)每个文本节点的id。由于文本节点没有这样的属性,我正在创建这样的属性,例如,var txt=document.createTextNode('some Text');txt.id=someid
。您如何执行DOM或文本节点的序列化?@Xotic750这将取决于反序列化的工作方式。为了避免registerElement问题,我可以在创建所有文本节点时使用自定义文本
标记来包装它们,并保持这样,尽管这需要一些额外的开销;txt.id='someid'代码>不适用于id
使用具有属性的元素包装文本节点将是我能想到的唯一方法。
<P><custom-text id='node27'>some text</custom-text></P>
var textId = document.registerElement('custom-text', {
prototype: Object.create(Text.prototype, {
id: {
get: function() { return this.id; },
set: function(value) { this.id = value }
}
})
});
var textId = document.registerElement('custom-text', {
prototype: Object.create(HTMLElement.prototype)
})
})