2016-09-27 76 views
3

我制作了一个网站,它使用了一些JavaScript功能的模板标签。这个功能在边缘不起作用,我认为这是因为模板标签,因为我曾经听说过它们之间可能存在一些问题。HTML5模板标签无法使用边缘?

但根据caniuse.com边缘应该有模板标签的支持,没有任何问题列出。另外根据MDN:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template Edge自从版本13开始应该有支持。我已经在版本20 ov Edge中进行了测试。

我也没有得到任何JavaScript错误的边缘consle,所以我认为它只能是模板标签的问题。

我的问题很简单。 Edge还是不支持模板标签?或者是需要解决的问题(shiv或类似)?

回答

2

是的,MS Edge绝对支持模板。但是,有一个known issue检索文档片段(如模板的内容)的firstElementChild。在使用模板时,最常见的方法是抓住内容的firstElementChild,将其克隆并放置在DOM的某个位置,因此可能看起来模板在MS Edge中第一眼就完全被破坏了。

在这篇文章的时候,下面的代码将在MS边缘失败:

var clone = template.content.firstElementChild.cloneNode(true); 

此代码将在MS边缘和所有其他职位MS IE浏览器中工作:

var clone = template.content.querySelector("*").cloneNode(true); 

或者更好的是,你甚至可以容纳微软的IE浏览器:

var clone = template.content ? template.content.querySelector("*").cloneNode(true) : template.firstElementChild.cloneNode(true); 

在这最后的代码snip-它,旧的浏览器像MS我E将正确创建克隆,但标记中的模板将被解析并显示,除非隐藏。该模板是可用的,但它没有任何本机性能优势。