做页面换肤时,有部分图片没有换过来(如图),是啥原因,从服务器上下载下来图片是正确的,但是必须刷新一下才行,才能使部分没有换肤的按钮图片换肤,求原因?

解决方案 »

  1.   

    html代码:
    <a  onMouseOver="MM_swapImage('btn_syn','','../imgs/$txt_lang/button_synchronous_b.gif',1)" 
    onMouseOut=MM_swapImgRestore()><img src="../imgs/$txt_lang/button_synchronous.gif" alt=""  name="btn_syn"  class="btn"></a>JS代码:
    /********************************************************
        Copyright: 1999-2003, Legend R&D Security Lab.
         FileName: imgEffect.js
           Author: 
          Version: 1.0
             Date: 2003/03/25
      Description: 
          History: 
    *********************************************************/ /********************************************************
    function: MM_swapImgRestore()
    return :
    para:el, 
    description:
    *********************************************************/
    function MM_swapImgRestore() { //v3.0
      var i,x,a = document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
    }
    /********************************************************
    function: MM_preloadImages() 
    return :
    para: 
    description:
    *********************************************************/
    function MM_preloadImages() { //v3.0
      var d=document; if(d.images){ if(!d.MM_p) d.MM_p = new Array();
        var i,j = d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
        if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
    }/********************************************************
    function: MM_findObj(n, d)
    return :
    para:n,d
    description:
    *********************************************************/
    function MM_findObj(n, d) { //v4.01
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && d.getElementById) x=d.getElementById(n); return x;
    }/********************************************************
    function: MM_swapImage()
    return :
    para:
    description:
    *********************************************************/
    function MM_swapImage() { //v3.0
      var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
       if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
    }
      

  2.   

    看不出来问题,我用本地图片试了,在onmouseover的时候,是可以切换图片的,
    你在MM_swapImage这个函数的最开始,加个alert,让函数暂停一会,试试是不是在执行函数的时候,图片还没有下载过来。
      

  3.   

    它是每次换肤都是红、绿、蓝文件夹中读取所有图片覆盖imagePulbic文件夹中的图片,实际显示的图片都是从imagePublic文件夹中引用。
      

  4.   

    路径相同,自然存在缓存问题换肤比较好的方法是给body不同的ID表示不同的皮肤然后在CSS文件内根据不同的皮肤ID重写CSS样式当然公共的就不用加ID写了,直接写在最上面就可以了.header{background-image:url('1.jpg')};#blue .header{background-image:url('blue/1.jpg')}#green .header{background-image:url('green/1.jpg')}
      

  5.   

    这种换肤的方式一看就是写客户端程序才会用到的,竞然用到web项目中,真是极品。如果什么都不能改,那只能加东西了每次换肤的时候都重新生成样式表,将样式表内的图片链接都加上一个版本号什么的<link href="common.css?v=201211221537" type="text/css" rel="stylesheet" />css文件内:
    .xx{background:url(xx.jpg?v=201211221537) 0 0 no-repeat;}