在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混合模式mix-blend-mode/background-blend-mode简介
Mar 15 HTML / CSS
CSS3 clip-path 用法介绍详解
Mar 01 HTML / CSS
css3高级选择器使用方法
Dec 02 HTML / CSS
CSS3 animation实现简易幻灯片轮播特效
Sep 27 HTML / CSS
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
Dec 06 HTML / CSS
详解CSS3中强大的filter(滤镜)属性
Jun 29 HTML / CSS
HTML5 自动聚焦(autofocus)属性使用介绍
Aug 07 HTML / CSS
如何利用input事件来监听移动端的输入
Apr 15 HTML / CSS
字中字效果的实现【html5实例】
May 03 HTML / CSS
HTML CSS 一个标签实现带动画的抖音LOGO
Apr 26 HTML / CSS
六个好看实用的 HTML + CSS 后台登录入口页面
Apr 28 HTML / CSS
分享几个实用的CSS代码块
Jun 10 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的5个入手程序
2006/11/23 PHP
php桌面中心(四) 数据显示
2007/03/11 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
laravel自定义分页效果
2017/07/23 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
JavaScript事件冒泡机制原理实例解析
2020/01/14 Javascript
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
python函数与方法的区别总结
2019/06/23 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Python表达式的优先级详解
2020/02/18 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
PyTorch-GPU加速实例
2020/06/23 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
英语系本科生求职信
2014/07/15 职场文书
员工工作自我评价
2014/09/26 职场文书
Python之matplotlib绘制折线图
2022/04/13 Python
python开发制作好看的时钟效果
2022/05/02 Python