在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教程:background-clip和background-origin
Oct 17 HTML / CSS
收集的22款给力的HTML5和CSS3帮助工具
Sep 14 HTML / CSS
css3 box-sizing属性使用参考指南
Jan 08 HTML / CSS
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
Jun 03 HTML / CSS
css3的transition属性详解
Dec 15 HTML / CSS
HTML5的video标签的浏览器兼容性增强方案分享
May 19 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
Dec 20 HTML / CSS
HTML5 Canvas实现360度全景图的示例代码
Jan 29 HTML / CSS
HTML5中使用json对象的实例代码
Sep 10 HTML / CSS
Html5之webcoekt播放JPEG图片流
Sep 22 HTML / CSS
如何查看浏览器对html5的支持情况
Dec 15 HTML / CSS
纯html+css实现打字效果
Aug 02 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
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
js切换光标示例代码
2013/10/10 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
Node.js文件操作详解
2014/08/16 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
js实现轮播图特效
2020/05/28 Javascript
Python os模块介绍
2014/11/30 Python
Python中的ceil()方法使用教程
2015/05/14 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
python 模拟登陆github的示例
2020/12/04 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
大学生就业自我鉴定
2013/10/26 职场文书
学校大课间活动方案
2014/01/30 职场文书
党员承诺书内容
2014/03/26 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
《假如》教学反思
2016/02/17 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL