在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选择器的研究(详解)
Sep 16 HTML / CSS
css3 border-image使用说明
Jun 23 HTML / CSS
深入浅出CSS3 background-clip,background-origin和border-image教程
Jan 27 HTML / CSS
CSS3的column-fill属性对齐列内容高度的用法详解
Jul 01 HTML / CSS
css3进阶之less实现星空动画的示例代码
Sep 10 HTML / CSS
简单聊聊H5的pushState与replaceState的用法
Apr 03 HTML / CSS
HTML5 Canvas图像模糊完美解决办法
Feb 06 HTML / CSS
html5指南-7.geolocation结合google maps开发一个小的应用
Jan 07 HTML / CSS
HTML5中meta属性的使用方法
Feb 29 HTML / CSS
HTML5本地存储之IndexedDB
Jun 16 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
Jan 30 HTML / CSS
CSS完成视差滚动效果
Apr 27 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中call_user_func_array()函数的用法演示
2012/02/05 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
js window.onload 加载多个函数的方法
2009/11/02 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
在python中实现对list求和及求积
2018/11/14 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
python语言是免费还是收费的?
2020/06/15 Python
python-地图可视化组件folium的操作
2020/12/14 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
体育专业个人求职信范文
2013/12/27 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
2014组织生活会方案
2014/05/19 职场文书
机票销售员态度不好检讨书
2014/09/27 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
社团个人总结范文
2015/03/05 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
html form表单基础入门案例讲解
2021/07/21 HTML / CSS