浏览器兼容性杂谈
原文地址: 小昱博客 - 浏览器兼容性杂谈 转载请注明出处,谢谢!
html5shiv.js让IE6-8浏览器支持HTML5新标签
参考文章
使用方法
<!--[if IE]>
<script src="html5shiv.js"></script>
<![endif]-->
Respond.js让IE6-8浏览器支持媒体查询
参考文章
Respond.js让IE6-8支持CSS3 Media Query
使用方法
1.在css中正常用 min/max-width media queries
@media screen and (min-width: 480px){
...styles for 480px and up go here
}
2.引入respond.min.js,但要在css的后面(越早引入越好,在ie下面看到页面闪屏的概率就越低,因为最初css会先渲染出来,如果respond.js加载得很后面,这时重新根据media query解析出来的css会再改变一次页面的布局等,所以看起来有闪屏的现象)
<!--[if IE]>
<script src="respond.js"></script>
<![endif]-->
实现思路
1.把head中所有的css路径取出来放入数组
2.然后遍历数组一个个发ajax请求
3.ajax回调后仅分析response中的media query的min-width和max-width语法,分析出viewport变化区间对应相应的css块
4.页面初始化时和window.resize时,根据当前viewport使用相应的css块。
总结
优点:压缩后仅1k,不跨域时性能ok,只需引入respond.js通用易用
缺点:仅支持media query的min-width和max-width(用于响应式够用);支持跨域,虽然配置有点麻烦,实现跨域代价高而且有闪屏体验欠佳。
IE6~IE8中使用css3的选择器
参考文档
使用方法
Selectivizr的使用非常的简单,但是并不能直接使用,在使用前需要先加载下列框架中的任何一个:JQuery、dojo、prototype、Yahoo YUI、DOMAssistant、mootools、NVMatcher。需要注意的是Selectivizr对各个框架的支持程度不一,具体可查看官方网站。 然后在页面里引用Selectivizr即可。
<script type="text/javascript" src="[JS library]"></script>
<!--[if lt IE 9]>
<script type="text/javascript" src="selectivizr-min.js"></script>
< ![endif]-->
注意事项
- Selectivizr会自动检测最好的JS框架,如果你当前页面中正在使用如JQuery框架,但是它对Selectivizr的支持并不太好,你只需要在页面中再调用另一个(如Mootools)即可。
- CSS样式必须使用标签引入,还可以使用@import,但不能在页面里使用