zoukankan      html  css  js  c++  java
  • IE 6 背景图片闪烁 IT


    由于菜单样式是用 onmouseover 动态更改样式,其中背景图片要跟着变化; 当页面操作菜单来回切换时,发现菜单有细微的闪烁,任务栏上也总是显示菜单的背景图片从服务器下载 的情况.在网上搜了一下终于找到解决方案: 


      要给一些按钮或是img设置背景,而为了达到数据与表现样式分离的效果,通常背景样式都是在CSS里设定的,但是这个行为在IE会有一个Bug,那就是因为IE默认情况下不缓存背景图片,所以当鼠标在有CSS背景的按钮或是图片上移动时,图片会闪烁甚至鼠标会出现忙的状态,而在FireFox下没有这个问题,为了解决这个问题,有两种解决办法,其一是在CSS中加入如下样式,但注意的是,IE7则没这个问题了.

       (其实,即IE的cache设置为Every visit to the page,而不是默认的Automatically。基本上,只有开发者才会把cache设置为每次访问检查更新,所以这个bug其实不会影响真正的用户(根据在winxpsp2的ie6下测试,虽然可能仍然调用了一次网络存取的api,但是并没有发生实际的请求,症状就是鼠标有极短时间的抖动,但是图像不会闪烁)
      在页面中的任意位置加入如下代码,即可达到理想中的效果:

    <script>
    document.execCommand(”BackgroundImageCache”, false, true);
    </script> 


    (function(){
        /**//*Use Object Detection to detect IE6*/
        var  m = document.uniqueID /**//*IE*/
        && document.compatMode  /**//*>=IE6*/
        && !window.XMLHttpRequest /**//*<=IE6*/
        && document.execCommand;
        
        try{
            if(!!m){
                m("BackgroundImageCache", false, true) /**//* = IE6 only */ 
            }
            
        }catch(oh){};

    })(); 


     最后如下简单的写法,终于解决了问题 :

     1 //--解决IE背景闪烁

    2 try {
    3     document.execCommand("BackgroundImageCache"falsetrue);
    4 catch (err) { }


  • 相关阅读:
    MySQL8.0设置远程访问权限
    MySQL创建用户与授权
    input lable水平对齐
    jquery datagrid加载后仅选定第一行
    jquery隐藏按钮
    C# 添加excel批注
    在ashx中使用Server对象
    jquery 获取datagrid行数
    弹出窗体中加载页面
    【MySQL】MySQL零碎积累
  • 原文地址:https://www.cnblogs.com/machaofast/p/1929436.html
Copyright © 2011-2022 走看看