如何让IE9以下版本认识html5元素?

html-css053

如何让IE9以下版本认识html5元素?,第1张

每个浏览器都有一份清单列举自己所支持的HTML元素。不在清单上的元素都将被视为未知元素。浏览器不会给未知元素设定任何样式(不同浏览器对元素会有不同的默认样式)。在IE9之前的版本中,也不能对未知元素设定样式。未知元素的DOM也显示不正确,IE会在DOM中插入一个没有子元素的空节点。所有原本认为将会成为这个未知元素的子元素的元素会成为其兄弟节点。针对这个问题有一个弥补方案,在使用里如article标签之前先用js创建一个虚假的article元素,IE就会识别这个元素了,而支持用css设定样式。这个虚假元素甚至都不需要插入到DOM中。

你用的遨游可能是用的webkit的内核,印象中这个浏览器是双内核的。IE9对于video标签确实是不支持的,到了IE10这个问题才有所改善。不过也有解决的办法,去下载一个video.js就可以了,这是一个针对低版本IE的HTML5视频支持的解决方案,在书写代码时,使用标准的HTML5写法即可,在IE9及以下版本浏览器里面这个JS会自动生成一个flash播放器,模拟HTML5播放器的效果,这样就不需要为html5的video标签的兼容性而头疼了~~~

第一种方法:IE9以下版本的IE将创建HTML5标签, 非IE浏览器会忽略这段代码,因此不会发生http请求,也就不影响网页执行效率。

<!--[if lt IE9]>

<script>

(function() {

if (!

/*@cc_on!@*/

0) return

var e = "abbr, article, aside, audio, canvas, datalist, details, dialog, eventsource, figure, footer, header, hgroup, mark, menu, meter, nav, output, progress, section, time, video".split(', ')

var i= e.length

while (i--){

document.createElement(e[i])

}

})()

</script>

<![endif]-->

第二种方法:在你的网页中引入Google的html5shiv包(推荐)

<!--[if lt IE9]>

<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>

<![endif]-->

但是不管使用以上哪种方法,都要初始化新标签的CSS.因为HTML5在默认情况下表现为内联元素,对这些元素进行布局我们需要利用CSS手工把它们转为块状元素方便布局

/*html5*/

article,aside,dialog,footer,header,section,footer,nav,figure,menu{display:block}

但是如果ie6/7/8 禁用脚本的用户,那么就变成了无样式的"白板"网页,我们该怎么解决呢?

我们可以参照facebook的做法,即引导用户进入带有noscript标识的 “/?_fb_noscript=1”页面,用 html4 标签替换 html5 标签,这要比为了保持兼容性而写大量 hack 的做法更轻便一些。

<!--[if lte IE 8]>

<noscript>

<style>.html5-wrappers{display:none!important}</style>

<div class="ie-noscript-warning">您的浏览器禁用了脚本,请<a href="">查看这里</a>来启用脚本!或者<a href="/?noscript=1">继续访问</a>.

</div>

</noscript>

<![endif]-->

引导用户开启脚本,或者直接跳转到HTML4标签设计的界面。