Шаблон HTML5 не работает в Internet Explorer, как решить эту проблему?

Я сделал шаблон в HTML5, который работает с Chrome и Firefox, но не работает с Internet Explorer (проверено в IE 8).

Как я могу решить эту проблему?


person knotty    schedule 06.03.2014    source источник
comment
прежде всего, нам нужны коды...   -  person Mazeltov    schedule 06.03.2014


Ответы (6)


просто добавьте «display: none» в свои шаблоны. Работает для т.е. 11

<template id="fancyTemplate" style="display:none"></template>
person roof01    schedule 14.08.2017
comment
Отличное решение, спасибо! Даже IE11 отображает <template> контент, независимо от того, находится ли он в <head>. - person dakab; 26.02.2018

Я рекомендую вам полифилл Neovov: https://github.com/neovov/template-element-polyfill

NB: В IE 11 есть ошибка: он перемещает ‹template> под элемент ‹body> перед рендерингом DOM! Таким образом, атрибут parentNode неверен, и вложение не удастся. Вы можете увидеть это в инструменте [F12].

person Supersharp    schedule 21.04.2015
comment
Это, вероятно, так же хорошо, как и идет, но это все еще ограничено. Поскольку материал внутри тега шаблона визуализируется, вы должны быть осторожны, чтобы по-прежнему следовать правилам вложенности HTML, несмотря на то, что правильно функционирующий элемент Template может игнорировать эти правила. Я получаю неожиданный конечный тег и тому подобное на некоторых моих страницах. - person Stephen R; 10.04.2018
comment
Например: я пытался поместить строку таблицы в шаблон. Поскольку (я думаю) TR не может существовать только внутри Body, IE удаляет TR и TD и просто оставляет содержимое TD. (Даже с shivs или polyfills, IE в основном видит Template как своего рода Div-подобный объект, и иерархия HTML срабатывает) - person Stephen R; 10.04.2018
comment
Вы правы, полностью заполнить тег шаблона невозможно. - person Supersharp; 10.04.2018
comment
Верно. Просто пытаюсь предупредить людей, если они ожидают, что это будет полная замена. :-) - person Stephen R; 04.05.2018

Получите копию html4shiv и используйте ее там, где IE меньше 9:

<!--[if lt IE 9]> 
<link rel="stylesheet" href="styles/ie.css" type="text/css"> <script src="scripts/ie/html5shiv.min.js"></script> 
<![endif]-->
person Dr.Avalanche    schedule 06.03.2014
comment
@knotty конечно, просто заново изобретайте все, что делает html5shiv :) - person Dr.Avalanche; 06.03.2014
comment
узловатый прав, переписывать html5shiv не стоит. Кстати, почему IE8? Это версия шестилетней давности. В то время ничто не поддерживало современный HTML5. Если вам нужен бесплатный ресурс для тестирования современных версий Internet Explorer, посетите modern.ie, и там есть бесплатные виртуальные машины. . - person Chris Love; 06.03.2014

Вы ищете html5shiv.

Он 'включает' все элементы html5, недоступные в старых версиях Internet Explorer.

person WΩLLE - ˈvɔlə    schedule 06.03.2014
comment
<template> недоступно НИ В ОДНОЙ версии IE, не только в старых версиях. Не совсем уверен, что html5shiv решит проблему... - person Alvaro; 12.08.2015

Вы можете попробовать заменить тег <template> на <script>

<script id="fancyTemplate"></script>
person user116313    schedule 11.10.2018
comment
Не забудьте добавить тип, потому что по умолчанию используется javascript. <script type="text/x-template" id="fancyTemplate"></script> - person BYTE RIDER; 20.11.2018

Вы можете скрыть элемент с помощью CSS: template { display:none !important; }

И если вам нужно получить доступ/клонировать контент, как это изначально возможно в других браузерах, используйте этот полифилл: https://github.com/jeffcarp/template-polyfill

Но имейте в виду, что содержимое <template> по-прежнему можно найти в DOM и выполнить — предотвращение именно этого является основной целью тега. Никакой полифилл не может остановить это, IE снова замедляет современную веб-разработку.

person Fabian von Ellerts    schedule 28.05.2019