如果我在文档片段中插入注释节点,以后可以将其转换为HTML吗?例:
var fragment = document.createDocumentFragment();
var comment = document.createComment('<div>Testing</div>');
fragment.appendChild(comment);
// Convert comment into actual HTML?
在片段内部看起来像什么:
<!--<div>Testing</div>-->
以及完成后应如何处理(实际DOM):
<div>Testing</div>
背景:
将HTML插入片段有很多限制。片段不支持
innerHTML
或insertAdjacentHTML
等。还有其他将HTML放入片段的方法,但是它们会删除某些元素,仅保留内部文本。例如,使用createRange
API创建片段会删除这些类型的节点,而我将只剩下带有文本节点“ Data”的片段var fragment = document.createRange().createContextualFragment('<td>Data</td>');
希望是,如果我可以将注释转换为实际的DOM,它将按预期工作。
最佳答案
听起来您的根本问题是您需要将HTML文本填充到DocumentFragment
中,因此这里有一个帮助程序功能。
var container = document.createElement('div')
function createFragmentWithHTML (html, doc) {
var result = (doc || document).createDocumentFragment()
container.innerHTML = html
while (container.firstChild) result.appendChild(container.firstChild)
return result
}
var fragment = createFragmentWithHTML('<div>Testing</div><p><strong>More text</strong></p>')
// do whatever you want with `fragment`
document.body.appendChild(fragment)