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 相关文章推荐
几行代码轻松搞定jquery实现flash8类似的连接效果
May 03 Javascript
jquery在Chrome下获取图片的长宽问题解决
Mar 20 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
Nov 14 Javascript
js Array操作的最简短最容易理解方法
Dec 09 Javascript
javascript设计模式之单体模式学习笔记
Feb 15 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
vue快捷键与基础指令详解
Jun 01 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
Jun 19 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
Aug 17 Javascript
vue组件之间通信实例总结(点赞功能)
Dec 05 Javascript
vue实现图片按比例缩放问题操作
Aug 11 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
Feb 08 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强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
js传值 判断
2006/10/26 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
用jquery写的一个万年历(自写)
2014/01/20 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
layui实现三级联动效果
2019/07/26 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
js+canvas实现五子棋小游戏
2020/08/02 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
爱游人:Travelliker
2017/09/05 全球购物
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
销售高级职员求职信
2013/10/29 职场文书
护士的岗位职责
2013/12/04 职场文书
村支部书记群众路线对照检查材料思想汇报
2014/10/08 职场文书
年度考核登记表个人总结
2015/03/06 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
爱国影片观后感
2015/06/18 职场文书