在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轻松实现清新 Loading 效果的简单实例
Jun 06 HTML / CSS
详解CSS3 用border写 空心三角箭头 (两种写法)
Sep 29 HTML / CSS
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
Oct 11 HTML / CSS
使用CSS3制作一个简单的进度条(demo)
May 23 HTML / CSS
CSS3田字格列表的样式编写方法
Nov 22 HTML / CSS
canvas粒子动画背景的实现示例
Sep 03 HTML / CSS
Html5新增标签与样式及让元素水平垂直居中
Jul 11 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
May 08 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
Sep 10 HTML / CSS
AmazeUI中模态框的实现
Aug 19 HTML / CSS
AmazeUI图片轮播效果的示例代码
Aug 20 HTML / CSS
使用CSS实现黑白格背景效果
Jun 01 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二分法在IP地址查询中的应用
2008/08/12 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
JS实现页面打印(整体、局部)
2017/08/18 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
对python中的for循环和range内置函数详解
2018/04/17 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
如何用canvas实现在线签名的示例代码
2018/07/10 HTML / CSS
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
电子商务专业自我鉴定
2013/12/18 职场文书
母亲节感恩寄语
2014/02/21 职场文书
主题实践活动总结
2014/05/08 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
2016年度员工工作表现评语
2015/12/02 职场文书
青岛市的收音机研制与生产
2022/04/07 无线电