HTML5模板在Internet Explorer上无法工作,如何解决?

11

我在HTML5中制作了一个模板,可以在Chrome和Firefox上使用,但无法在Internet Explorer(在IE 8上测试)上使用。

我该如何解决这个问题?


首先,我们需要一些代码... - Mazeltov
1
可能是在IE 8和IE 7中使用HTML 5标签的重复问题。 - ˈvɔlə
6个回答

9
只需在您的模板中添加"display:none"即可。适用于IE 11。
<template id="fancyTemplate" style="display:none"></template>

1
非常好的解决方案,谢谢!即使IE11也可以显示<template>内容,无论它是否在<head>中。 - dakab

7

这可能是最好的情况,但仍然有限。因为模板标签内部的内容被渲染,所以即使正确运行的模板元素可以忽略这些规则,你仍然要小心遵循HTML嵌套规则。我在一些页面上遇到了“意外结束标记”等问题。 - Stephen R
我一直在尝试将表格行放入模板中。因为(我认为)TR不能存在于Body中,IE正在删除TR和TD,只留下TD的内容。(即使使用shivs或polyfills,IE基本上将Template视为一种类似于Div的对象,并且HTML层次结构会发挥作用) - Stephen R
你说得对,无法完全填充模板标签。 - Supersharp
好的。只是想提醒大家,以防他们期望这是完全替代品。 :-) - Stephen R

3

获取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]-->

@knotty 当然,你可以重新发明所有HTML5shiv所做的事情 :) - Dr.Avalanche
2
Knotty是正确的,重写html5shiv不值得。顺便问一下,为什么要用IE8?那是6年前的版本。当时没有任何支持现代HTML5的东西。如果您需要免费资源来获取现代Internet Explorer版本进行测试,请访问http://modern.ie,那里有免费的虚拟机可用。 - Chris Love

2
你正在寻找 html5shiv
它可以“启用”所有在旧版 Internet Explorer 中不可用的 HTML5 元素。

3
<template> 标签在IE的所有版本中都无法使用,不仅仅是旧版本。不确定html5shiv是否可以解决这个问题... - Alvaro

1
你可以尝试用<script>标签替换<template>标签。
<script id="fancyTemplate"></script>

2
别忘了加上类型,因为默认类型是 JavaScript。<script type="text/x-template" id="fancyTemplate"></script> - BYTE RIDER

1
你可以使用CSS隐藏元素:template { display:none !important; } 如果需要像其他浏览器一样本地访问/克隆内容,请使用此polyfill:https://github.com/jeffcarp/template-polyfill 但请记住,<template>的内容仍然可以在DOM中找到并执行-防止这种情况发生是该标签的主要目标。没有polyfill可以阻止IE再次减缓现代Web开发的速度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接