首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将HTML附加到DocumentFragment?

如何将HTML附加到DocumentFragment?
EN

Stack Overflow用户
提问于 2013-11-12 12:48:35
回答 3查看 7.4K关注 0票数 5

我将文本节点添加到这样的documentFragment中:

代码语言:javascript
复制
var foo = document.createDocumentFragment();
var someText = "Hello World";
foo.appendChild(document.createTextNode(someText));

这很好,但有时我会被传递“文本”,其中包括如下的内联链接:

代码语言:javascript
复制
var someOtherText = "Hello <a href='www.world.com'>World</a>";

它在我的处理程序中被转换成硬编码的文本而不是链接。

问题:

如何将类似上述的HTML附加到documentFragment中?如果我不使用textNodes,可以用appendChild来完成吗?

EN

回答 3

Stack Overflow用户

发布于 2013-11-12 13:03:15

创建一个临时div,在innerHTML中插入文本,然后将div的所有节点移动到片段中。由于一个元素一次只能出现在一个地方,所以它将自动从临时div-标记中删除。

代码语言:javascript
复制
var frag = document.createDocumentFragment();

var div = document.createElement('div');
div.innerHTML = '<a href="http://stackoverflow.com/">Stack overflow</a>';
while (div.firstChild) frag.appendChild(div.firstChild);
票数 12
EN

Stack Overflow用户

发布于 2015-12-15 15:07:09

代码语言:javascript
复制
document.createRange().createContextualFragment("<span>Hello World!</span>");

它返回一个DocumentFragment。

支持IE >= 9

编辑:

最近的版本Safari似乎以较短的方式失败了,这里有一些更长的工作方式:

代码语言:javascript
复制
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>");
票数 5
EN

Stack Overflow用户

发布于 2013-11-12 13:00:06

这可能是可行的:

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19929641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档