Тег шаблона HTML5 не работает с краем?

Я создал веб-сайт, который использует тег шаблона для некоторых функций JavaScript. И эта функция не работает в Edge, и я предполагаю, что это из-за тега шаблона, поскольку в прошлом я слышал, что между ними может быть какая-то проблема.

Но, согласно caniuse.com, edge должен иметь поддержку тега шаблона без каких-либо перечисленных проблем. Также согласно MDN: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template Edge должен был поддерживаться с версии 13. Я тестировал Edge версии 20.

Я также не получаю никаких ошибок javascript в пограничной консоли, поэтому я предполагаю, что это может быть проблема только с тегом шаблона.

Мой вопрос довольно прост. Поддерживает ли Edge тег шаблона? Или это обходной путь (заточка или что-то подобное)?


person Alex    schedule 27.09.2016    source источник


Ответы (1)


Да, MS Edge абсолютно поддерживает шаблоны. Однако при получении 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, создадут клон правильно, но шаблоны в разметке будут проанализированы и отображены, если они не скрыты. Шаблон пригоден для использования, но у него нет собственных преимуществ производительности.

person cage rattler    schedule 23.08.2017
comment
При регистрации в марте 2019 г. у меня есть основания полагать, что Edge теперь поддерживает template.content.firstElementChild.cloneNode(true); - person TKoL; 07.03.2019
comment
На самом деле, я только что открыл вашу ссылку known issue в Edge, и она предупредила foo, как и было задумано. - person TKoL; 07.03.2019