实习问题小总结
浏览器兼容问题
css兼容
- 主要针对低版本的IE
使用IE的hack解决部分兼容问题
background:red;/* FF */
background:blue\0;/* OP */
background:turquoise\9;/* IE8+ */
*background:green; /* IE7 */
_background:yellow;/* IE6 */
//只有IE会识别的前缀
*html div.d03{
background:yellow;/* IE6 */
}
*+html div.d03{
background:green;/* IE7 */
}
html hack
<!--[if lte IE 8]> <!-- IE条件注释-->
<link src="iecss.css" rel="stylesheet" />
<![endif]-->
对于IE的透明度效果并不能简单使用rgba(, , , 0.5)也不能用opacity,需要使用IE特有的滤镜
以下是随便找到的一篇关于filter的使用的介绍
这我还没仔细看,然后以下我我找到的关于透明度改变较好的相关代码
/* IE 4-9 */
filter:alpha(opacity=50);
/*This works in IE 8 & 9 too*/
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
/*IE4-IE9*/
filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
- css高级选择器兼容问题
还是IE的问题,IE不支持项nth-child()这样的选择器,查了以下,是存在插件可以支持的——ie-css3.js,然而我只需要在一两个地方用到,同时元素数量是可控的,所以我只采取在需要的某些元素上添加新的class,然后css属性使用hack就好了
然后是相关的js问题
JSON.parse()/JSON.stringify()不可用
发现低版本的IE不支持JSON对象下的方法,这里由于使用场景,这里的原来代码是后台经过json_encode
处理过的,但主要问题不是这里,而是前端ajax调取数据时,使用的是jquery,但dataType没有设置,使用了默认的text
,就需要经过JSON.parse(data)
处理,但经过改用回dataType: 'json'
问题就解决了,jquery帮助把json字符串转换为json对象了。
jquery利用自定义的parseJSON()
方法解析格式完好的json字符串,详细解析请看
以上是环境特殊,如果真的需要调用这两个方法,可以看这个解决方案