HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法


Posted in Javascript onNovember 25, 2015

HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单。

HTML5的新标签元素有:

<header>定义页面或区段的头部;
<footer>定义页面或区段的尾部;
<nav>定义页面或区段的导航区域;
<section>页面的逻辑区域或内容组合;
<article>定义正文或一篇完整的内容;
<aside>定义补充或相关内容;

HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法

使用他们能让代码语义化更直观,而且更方便SEO优化。但是此HTML5新标签在IE6/IE7/IE8上并不能识别,需要进行JavaScript处理。以下就介绍几种方式。
方式一:Coding JavaScript

<!--[if lt IE9]> 
<script> 
  (function() {
   if (! 
   /*@cc_on!@*/
   0) return;
   var e = "abbr, article, aside, audio, canvas, datalist, details, dialog, eventsource, figure, footer, header, hgroup, mark, menu, meter, nav, output, progress, section, time, video".split(', ');
   var i= e.length;
   while (i--){
     document.createElement(e[i])
   } 
})() 
</script>
<![endif]-->

如果是IE9以下的IE浏览器将创建HTML5标签, 这样非IE浏览器就会忽视这段代码,也就不会有无谓的http请求了。

第二种方法:使用Google的html5shiv包(推荐)

<!--[if lt IE9]> 
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

由于国内google的服务器访问卡,建议调用国内的cdn

<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<![endif]-->

但是不管使用以上哪种方法,都要初始化新标签的CSS.因为HTML5在默认情况下表现为内联元素,对这些元素进行布局我们需要利用CSS手工把它们转为块状元素方便布局

/*html5*/

article,aside,dialog,footer,header,section,footer,nav,figure,menu{display:block}

但是如果ie6/7/8 禁用脚本的用户,那么就变成了无样式的"白板"网页,我们该怎么解决呢?

我们可以参照facebook的做法,即引导用户进入带有noscript标识的 “/?_fb_noscript=1”页面,用 html4 标签替换 html5 标签,这要比为了保持兼容性而写大量 hack 的做法更轻便一些。

<!--[if lte IE 8]> 
<noscript>
   <style>.html5-wrappers{display:none!important;}</style>
   <div class="ie-noscript-warning">您的浏览器禁用了脚本,请<a href="">查看这里</a>来启用脚本!或者<a href="/?noscript=1">继续访问</a>.
   </div>
</noscript>
<![endif]-->

这样可以引导用户开启脚本,或者直接跳转到HTML4标签设计的界面。

Javascript 相关文章推荐
javascript 原型模式实现OOP的再研究
Apr 09 Javascript
javascript web页面刷新的方法收集
Jul 02 Javascript
jquery连缀语法如何实现
Nov 29 Javascript
js实现匹配时换色的输入提示特效代码
Aug 17 Javascript
URL中“#” “?” &amp;“”号的作用浅析
Feb 04 Javascript
js实现上下左右弹框划出效果
Mar 08 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
Aug 26 jQuery
js仿微信抢红包功能
Sep 25 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
Dec 27 jQuery
React中如何引入Angular组件详解
Aug 09 Javascript
在Vue mounted方法中使用data变量详解
Nov 05 Javascript
使用vue实现通过变量动态拼接url
Jul 22 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
Nov 25 #Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
Nov 25 #Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 #Javascript
jquery+css实现动感的图片切换效果
Nov 25 #Javascript
基于jQuery实现拖拽图标到回收站并删除功能
Nov 25 #Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
Apr 20 #Javascript
Prototype框架详解
Nov 25 #Javascript
You might like
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
原生js+canvas实现验证码
2020/11/29 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
Python实现的购物车功能示例
2018/02/11 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
Django REST framework内置路由用法
2019/07/26 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
小学生安全保证书
2014/02/01 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
工作评语大全
2014/04/26 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
演讲开场白台词大全
2015/05/29 职场文书
律政俏佳人观后感
2015/06/09 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
Android Rxjava3 使用场景详解
2022/04/07 Java/Android