IE6背景图片不显示,解决方法
在IE6下,如果拖动的DOM元素使用了背景图,在Drag的过程中会出现严重的鼠标抖动现象.
更常见的是当鼠标滑过元素,如果元素背景图片变换时,会出现图片变换时的闪烁。
这是因为:IE6下默认不缓存背景图片,CSS里每次更改图片的位置时都会重新发起请求.
可用如下方法来解决(让IE6缓存背景图片 ):
在head区(即<head>到</head>之间 添加以下js代码:
<!--[if IE 6]>
<script type="text/javascript">
document.execCommand("BackgroundImageCache", false, true);
</script>
<![endif]-->
区分ie的if写法
<!--[if lte IE 6]>………….<![endif]-->
Ite:less than or equal to意思是小于或等于IE6浏览器,用于IE浏览器的条件注释,常用于CSShack,针对IE的JS等。
以下是各种情况,已验证。
1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->
2. <!--[if IE]> 所有的IE可识别 <![endif]-->
3. <!--[if IE 5.0]> 只有IE5.0可以识别 <![endif]-->
4. <!--[if IE 5]> 仅IE5.0与IE5.5可以识别 <![endif]-->
5. <!--[if gt IE 5.0]> IE5.0以及IE5.0以上版本都可以识别 <![endif]-->
6. <!--[if IE 6]> 仅IE6可识别 <![endif]-->
7. <!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]-->
8. <!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]-->
9. <!--[if IE 7]> 仅IE7可识别 <![endif]-->
10. <!--[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]-->
11. <!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->
那如果当前的浏览器是IE,但版本比IE5还低,该怎么办呢,可以使用<!--[if ls IE 5]>,当然,根据条件注释只能在IE5+的环境之下,所以<!--[if ls IE 5]>根本不会被执行。
当然记住下面几个单词就可以很清醒的运用了!
lte:就是Less than or equal to的简写,也就是小于或等于的意思。
lt :就是Less than的简写,也就是小于的意思。
gte:就是Greater than or equal to的简写,也就是大于或等于的意思。
gt :就是Greater than的简写,也就是大于的意思。
! :就是不等于的意思,跟javascript里的不等于判断符相同。
解决(让IE6缓存背景图片):
document.execCommand("BackgroundImageCache", false, true);
- //缓存预加载设置
- BEUI.preLoadCacheSet = function(){
- //IE6默认不缓存背景图片的解决
- //http://madinsect.blogbus.com/logs/29562266.html
- if ( $.browser.msie ){
- //alert( $.browser.version ); // 6.0
- if ( $.browser.version.trim() == "6.0" ){
- //trim()在Divtpl.conroller.js定义
- document.execCommand("BackgroundImageCache", false, true);
- }
- }
try{document.execCommand('BackgroundImageCache',false,true);}catch(e){}
//成功一定有方法,失败一定有原因。