3

我制作了一个网站,它使用模板标签来实现一些 JavaScript 功能。而且这个功能在边缘不起作用,我认为这是因为模板标签,因为我过去听说它们之间可能存在一些问题。

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

我也没有在边缘控制台中收到任何 javascript 错误,所以我认为它只能是模板标签的问题。

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

4

1 回答 1

4

是的,MS Edge 绝对支持模板。但是,在检索文档片段(例如模板的内容)的 firstElementChild 时存在一个已知问题。在使用模板时,最常见的做法是抓取内容的 firstElementChild,将其克隆,然后将其放置在 DOM 中的某个位置,因此乍一看,MS Edge 中的模板似乎完全被破坏了。

在撰写本文时,以下代码将在 MS Edge 中失败:

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

此代码适用于 MS Edge 和所有其他后 MS IE 浏览器:

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

或者更好的是,您甚至可以容纳 MS IE:

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

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

于 2017-08-23T14:24:40.257 回答