在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实现的多级渐变下拉菜单导航效果代码
Aug 31 HTML / CSS
深入理解css属性的选择对动画性能的影响
Apr 20 HTML / CSS
css3 盒模型以及box-sizing属性全面了解
Sep 20 HTML / CSS
详解CSS3实现响应式手风琴效果
Jun 10 HTML / CSS
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
Oct 29 HTML / CSS
css3弹性盒子flex实现三栏布局的实现
Nov 12 HTML / CSS
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
Jan 03 HTML / CSS
如何使用html5与css3完成google涂鸦动画
Dec 16 HTML / CSS
html5 application cache遇到的严重问题
Dec 26 HTML / CSS
html5 Canvas画图教程(1)—画图的基本常识
Jan 09 HTML / CSS
利用三角函数在canvas上画虚线的方法
Jan 11 HTML / CSS
CSS3 实现的图片悬停的切换按钮
Apr 13 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
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
php实现encode64编码类实例
2015/03/24 PHP
简单谈谈favicon
2015/06/10 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
Python处理XML格式数据的方法详解
2017/03/21 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
pandas 层次化索引的实现方法
2019/07/06 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
AJAX都有哪些有点和缺点
2012/11/03 面试题
好家长事迹材料
2014/01/23 职场文书
学生会主席竞聘书
2014/03/31 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
MySQL之select、distinct、limit的使用
2021/11/11 MySQL