Javascript HTML<;模板>;紧张不安
我需要决定是使用Javascript HTML<;模板>;紧张不安,javascript,html,templates,microsoft-edge,clonenode,Javascript,Html,Templates,Microsoft Edge,Clonenode,我需要决定是使用还是仅使用documentFragment在Javascript中构建高度嵌套的元素。使用可能会更干净,但边缘支持至关重要,caniuse.com似乎表明只有部分支持: 不支持模板、嵌套模板或包含模板的元素上的Document.importNode 不支持模板、嵌套模板或包含模板的元素上的Node.cloneNode 问题是,我无法使用Edge进行测试(不运行Windows 10,也无权访问浏览器测试套件),而且我也无法在联机、MDN或Microsoft文档中找到有关它的任
还是仅使用documentFragment
在Javascript中构建高度嵌套的元素。使用
可能会更干净,但边缘支持至关重要,caniuse.com
似乎表明只有部分支持:
的标准方式将消失,这对我来说没有意义,因为这似乎是
的全部要点
唯一声称这一点的地方是
caniuse.com
,但我已经学会了信任它,这让我不确定使用什么方法。为了安全起见,我可能只使用documentFragment
,但是我想知道这是否是caniuse.com上的错误,或者是否有另一种使用
的合理方法,这是显而易见的,我没有注意到。下面的测试文档证明导入节点
和克隆节点
与Edge中的模板
一起工作正常,至少对于版本15及以上
<!DOCTYPE html>
<title><template> testing</title>
<div id="wrapper">
<template id="outer">lol<template id="inner">wut</template></template>
</div>
<script>
var wrapper = document.getElementById('wrapper').cloneNode(true);
var outer = wrapper.querySelector('#outer');
var clone = outer.cloneNode(true);
var inner = document.importNode(clone.content.lastChild, true);
var content = document.importNode(inner.content, true);
document.body.appendChild(content);
</script>
我知道已经晚了,但无论如何我都会把我的答案贴出来。我不想把这个“我知道已经晚了”的评论放在答案中。从这一点来看,卡努斯的警告似乎真的有误导性。@matthecat我想,但这似乎是一个已经存在了2年的问题,除非我遗漏了什么。谢谢你在这里提到它,即使是这样。很抱歉,我发现了你的问题。@matthecat我希望很清楚,这不是故意的不尊重……谢谢。我确实发现它甚至在那时也能用。我做了一个测试页面,用了浏览器之类的东西。那是一段相当紧张的时间,我忘了公布我的发现。
let template = document.querySelector('template');
document.body.append(document.importNode(template.content, true));