在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教程(7):CSS3嵌入字体
Apr 02 HTML / CSS
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
Jul 11 HTML / CSS
使用CSS3在触屏上为按钮实现激活效果
Sep 27 HTML / CSS
css3实现的下拉菜单效果示例
Jan 22 HTML / CSS
支持IE8的纯css3开发的响应式设计动画菜单教程
Nov 05 HTML / CSS
CSS3制作Dropdown下拉菜单的方法
Jul 18 HTML / CSS
CSS3动画:5种预载动画效果实例
Apr 05 HTML / CSS
CSS3动画和HTML5新特性详解
Aug 31 HTML / CSS
详解HTML5中的标签
Jun 19 HTML / CSS
HTML5实践-图片设置成灰度图
Nov 12 HTML / CSS
浅析HTML5:'data-'属性的作用
Jan 23 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
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.ini中date.timezone设置分析
2011/07/29 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
javascript去除空格方法小结
2015/05/21 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
又一枚精彩的弹幕效果jQuery实现
2016/07/25 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
python通过函数属性实现全局变量的方法
2015/05/16 Python
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
python的常用模块之collections模块详解
2018/12/06 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
《鞋匠的儿子》教学反思
2014/03/02 职场文书
2014年工人工作总结
2014/11/25 职场文书
表扬信范文
2015/05/04 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
vue 给数组添加新对象并赋值
2022/04/20 Vue.js