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 相关文章推荐
ExtJS GTGrid 简单用户管理
Jul 01 Javascript
jquery创建并行对象或者合并对象的实现代码
Oct 10 Javascript
js单词形式的运算符
May 06 Javascript
Visual Studio中js调试的方法图解
Jun 30 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
Dec 03 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
May 05 Javascript
关于axios如何全局注册浅析
Jan 14 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
Feb 18 jQuery
在js文件中引入(调用)另一个js文件的三种方法
Sep 11 Javascript
Vue使用Element实现增删改查+打包的步骤
Nov 25 Vue.js
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调用数据库的存贮过程
2006/10/09 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
少女风vue组件库的制作全过程
2019/05/15 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
Python 除法小技巧
2008/09/06 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
django实现分页的方法
2015/05/26 Python
Python中内建函数的简单用法说明
2016/05/05 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
python递归实现快速排序
2018/08/18 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
高校学生干部的自我评价分享
2013/11/04 职场文书
园艺师求职信
2014/03/10 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
党员承诺践诺书
2014/05/20 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA