在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 绘制BMW logo实的现代码
Apr 25 HTML / CSS
使用css3和jquery实现可伸缩搜索框
Feb 12 HTML / CSS
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
Nov 11 HTML / CSS
基础的CSS3弹性盒Flexbox布局使用实例
Apr 08 HTML / CSS
CSS3实现文字波浪线效果示例代码
Nov 20 HTML / CSS
css3编写浏览器背景渐变背景色的方法
Mar 05 HTML / CSS
详解css position 5种不同的值的用法
Jul 30 HTML / CSS
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
Jan 06 HTML / CSS
Html5实现iPhone开机界面示例代码
Jun 30 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
Mar 21 HTML / CSS
Html5写一个简单的俄罗斯方块小游戏
Dec 03 HTML / CSS
HTML中table表格拆分合并(colspan、rowspan)
Apr 07 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强制下载类型的实现代码
2011/04/21 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
JavaScript中的排序算法代码
2011/02/22 Javascript
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
JQuery ztree带筛选、异步加载实例讲解
2016/02/25 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中集合类型(set)学习小结
2015/01/28 Python
Python中property函数用法实例分析
2018/06/04 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
编写多线程Python服务器 最适合基础
2018/09/14 Python
django session完成状态保持的方法
2018/11/27 Python
如何基于python生成list的所有的子集
2019/11/11 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
python程序输出无内容的解决方式
2020/04/09 Python
小结Python的反射机制
2020/09/28 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
pymongo insert_many 批量插入的实例
2020/12/05 Python
入党申请人的自我鉴定
2013/12/01 职场文书
市政施工员自我鉴定
2014/01/15 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
河童之夏观后感
2015/06/11 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
PHP基本语法
2021/03/31 PHP