Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML<;模板>;紧张不安_Javascript_Html_Templates_Microsoft Edge_Clonenode - Fatal编程技术网

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
似乎表明只有部分支持:

  • 不支持模板、嵌套模板或包含模板的元素上的Document.importNode

  • 不支持模板、嵌套模板或包含模板的元素上的Node.cloneNode

  • 问题是,我无法使用Edge进行测试(不运行Windows 10,也无权访问浏览器测试套件),而且我也无法在联机、MDN或Microsoft文档中找到有关它的任何内容。无法将模板克隆到文档中几乎意味着使用
    的标准方式将消失,这对我来说没有意义,因为这似乎是
    的全部要点


    唯一声称这一点的地方是
    caniuse.com
    ,但我已经学会了信任它,这让我不确定使用什么方法。为了安全起见,我可能只使用
    documentFragment
    ,但是我想知道这是否是caniuse.com上的错误,或者是否有另一种使用
    的合理方法,这是显而易见的,我没有注意到。

    下面的测试文档证明
    导入节点
    克隆节点
    与Edge中的
    模板
    一起工作正常,至少对于版本15及以上

    <!DOCTYPE html>
    
    <title>&lt;template&gt; 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));