如何将 HTML 字符串附加到文档片段
How to append an HTML string to a DocumentFragment?
我正在将textnode添加到documentFragment中,如下所示:
var foo = document.createDocumentFragment();
var someText = "Hello World";
foo.appendChild(document.createTextNode(someText));
这工作正常,但有时我被传递"文本",其中包含如下内联链接:
var someOtherText = "Hello <a href='www.world.com'>World</a>";
在我的处理程序中,它被转换为硬编码文本而不是链接。
问题:
如何将上述 HTML 字符串附加到文档片段中?如果我不使用textNodes
可以使用appendChild
来完成吗?
创建一个模板元素,添加带有.innerHTML
的文本,并使用content
-属性获取documentFragment
:
function stringToFragment(string) {
const temp = document.createElement('template');
temp.innerHTML = string;
return temp.content;
}
现在你可以从字符串创建一个documentFragment
,你甚至可以将一个documentFragment
附加到一个documentFragment
:
const frag = stringToFragment('<div>Hello</div>');
frag.append(stringToFragment('<div>Stackoverflow</div>'));
document.createRange().createContextualFragment("<span>Hello World!</span>");
它返回一个文档片段。
支持 IE>= 9
编辑:
最新版本 Safari 似乎在短途上失败了,这里有一点长但工作方式:
var range = document.createRange();
range.selectNode(document.body); // Select the body cause there is always one (documentElement fail...)
var fragment = range.createContextualFragment("<span>Hello World!</span>");
这可能有效:
var foo = document.createDocumentFragment();
var someText = 'Hello <a href="www.world.com">World</a>';
var item = document.createElement('span');
item.innerHTML = someText
foo.appendChild(item);
document.body.appendChild(foo);
相关文章:
- 在与 IE8 兼容的文档片段中查找数据
- 将已编译的Undercore模板附加到文档片段
- 如何将 HTML 字符串附加到文档片段
- 如何删除创建的创建文档片段对象
- 如何获取文档片段中的所有文本节点
- 创建多级文档片段
- 文档片段中不允许的某些元素
- 淡入文档片段
- html5模板内容(文档片段)在appendChild上的加载顺序
- 使用jQuery'在jQuery文档片段中查找元素;s”;查找“;
- 我可以保留一个文档片段的引用吗
- 如何通过IE/FF将CSS规则添加到文档片段中
- this.node在Chrome控制台中仅显示为#文档片段
- 减去文档片段滚动的垂直偏移量
- 获取文档片段中元素的个数
- 将PHP生成的HTML附加到文档片段
- 将XML文档(片段)作为参数传递给chrome中的XSLT
- 将节点与break标记一起附加到文档片段
- jQuery是否在每个循环中使用创建文档片段
- 是否有任何方法可以从通用的HTML片段创建文档片段?