在IE6系列等老式浏览器中使用HTML5的新标签实现方案


Posted in HTML / CSS onDecember 25, 2012

HTML5 向开发人员提供了很多新的标签, 如 section, nav, article, header 和 footer 等. 这些标签语义化程度高, 会被经常使用, 但在 IE6, IE7, IE8 和 Firefox 2 等老式浏览器中不能识别和正常使用.

为什么老式的浏览器不能识别这些标签?

其实错不在浏览器, 因为在那个时代根本不存在这种标签, 所以不能正确识别出来, 而这种不寻常的标签识别令 DOM 结构变得异常.

我们有测试代码如下. 是一个文章标题和蓝色字的文章内容, 其中文章内容用了 article 标签.

复制代码
代码如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>测试</title>
<style>
article{color:#06F;}
</style>
</head>

<body>
<h1>文章标题</h1>
<article>
这是文章内容,应该是一段蓝色的文字。在老式浏览器中,如果不做 hack 将显示异常。
</article>
</body>
</html>


在 IE8 中, 显示如下.

在IE6系列等老式浏览器中使用HTML5的新标签实现方案

IE8 不能识别 article 标签, 定义在标签上的 CSS 样式没有起作用. 在 IE8 中, <article> 被解释成命名为 <article /></article /> 两个空的标签元素, 与文章内容并列为兄弟节点, 如下图.

在IE6系列等老式浏览器中使用HTML5的新标签实现方案

如何在老式浏览器中使用 HTML5 标签?

既然因为不能识别标签而不能使用, 解决办法就是让标签被识别出来. 所幸, 简单地通过 document.createElement(tagName) 即可以让浏览器识别标签和 CSS 引擎知道该标签的存在. 假设我们上面的例子的 <head> 区域加上如下代码.

复制代码
代码如下:

<script>
document.createElement('article');
</script>

IE8 中的 DOM 解释就会变成下图所示.

在IE6系列等老式浏览器中使用HTML5的新标签实现方案

自然, 文字也显示成正常的蓝色.

在IE6系列等老式浏览器中使用HTML5的新标签实现方案

结语

博客早就转用 HTML5 的写法, 但苦于很多用户没有用最新的浏览器, 一直还在用 HTML4 的标签集. HTML5 很多标签语义化强而且实用, 我也开始尝试一些常用的标签了, 现在用上了 article 和 time 标签.

HTML / CSS 相关文章推荐
一款基于css3的列表toggle特效实例教程
Jan 04 HTML / CSS
浅析与CSS3的loading动画加载相关的transition优化
May 18 HTML / CSS
纯HTML5+CSS3制作图片旋转
Jan 12 HTML / CSS
CSS3绘制六边形的简单实现
Aug 25 HTML / CSS
html5定制表单_动力节点Java学院整理
Jul 11 HTML / CSS
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
Jan 31 HTML / CSS
HTML5在a标签内放置块级元素示例代码
Aug 23 HTML / CSS
html5 自定义播放器核心代码
Dec 20 HTML / CSS
详解HTML5中ol标签的用法
Sep 08 HTML / CSS
html5拖拽应用记录及注意点
May 27 HTML / CSS
html5实现输入框fixed定位在屏幕最底部兼容性
Jul 03 HTML / CSS
不要在HTML中滥用div
May 08 HTML / CSS
HTML5引入的新数组TypedArray介绍
Dec 24 #HTML / CSS
突破canvas语法限制 让他支持链式语法
Dec 24 #HTML / CSS
HTML5重塑Web世界它将如何改变互联网
Dec 17 #HTML / CSS
如何使用html5与css3完成google涂鸦动画
Dec 16 #HTML / CSS
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
Dec 13 #HTML / CSS
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
Dec 13 #HTML / CSS
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
Dec 13 #HTML / CSS
You might like
合作指挥官:孟斯克
2020/03/16 星际争霸
PHP编写RESTful接口
2016/02/23 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
JS input 数字验证代码
2009/07/30 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
Python进阶篇之字典操作总结
2016/11/16 Python
Python pass详细介绍及实例代码
2016/11/24 Python
使用tensorflow实现线性svm
2018/09/07 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
python轮询机制控制led实例
2020/05/03 Python
python怎么自定义捕获错误
2020/06/29 Python
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
轻松制作精彩视频:Animoto
2018/09/19 全球购物
自主招生自荐书
2013/11/29 职场文书
求职简历推荐信范文
2013/12/02 职场文书
拓展策划方案
2014/06/03 职场文书
垃圾桶标语
2014/06/24 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
清明节寄语2015
2015/03/23 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
大学生见习总结报告
2015/06/24 职场文书
升学宴家长致辞
2015/07/27 职场文书