在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地图动态实例代码(圆圈向外扩散)
Jun 15 HTML / CSS
CSS3伪类选择器:nth-child()
Apr 02 HTML / CSS
web页面录屏实现
Feb 12 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
Dec 17 HTML / CSS
html5 利用canvas实现超级玛丽简单动画
Sep 06 HTML / CSS
Html5 FileReader实现即时上传图片功能实例代码
Sep 01 HTML / CSS
如何用H5实现一个触屏版的轮播器的实例
Jan 09 HTML / CSS
详解canvas绘制多张图的排列顺序问题
Jan 21 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
Nov 29 HTML / CSS
使用Html5 Stream开发实时监控系统
Jun 02 HTML / CSS
html form表单基础入门案例讲解
Jul 15 HTML / CSS
HTML中的表单元素介绍
Feb 28 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将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
js中if语句的几种优化代码写法
2011/03/12 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
javascript制作2048游戏
2015/03/30 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
营销部内勤岗位职责
2014/04/30 职场文书
研究生导师推荐信
2014/09/06 职场文书
2014年调度员工作总结
2014/11/19 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
小学班主任个人总结
2015/03/03 职场文书
2016春节家属慰问信
2015/03/25 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
安全生产标语口号
2015/12/26 职场文书
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android