我用了如下代码在测试的一个网站中解决了IE6和png图片的兼容问题,但是在web项目中png图片直接就一闪就不显示了,为什么呢,该如何解决?
 <script language="javascript" type="text/javascript">
  function correctPNG() {
  for (var i = 0; i < document.images.length; i++) {
  var img = document.images[i]
  var imgName = img.src.toUpperCase()
  if (imgName.substring(imgName.length - 3, imgName.length) == "PNG") {
  var imgID = (img.id) ? "id='" + img.id + "' " : ""
  var imgClass = (img.className) ? "class='" + img.className + "' " : ""
  var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
  var imgStyle = "display:inline-block;" + img.style.cssText
  if (img.align == "left") imgStyle = "float:left;" + imgStyle
  if (img.align == "right") imgStyle = "float:right;" + imgStyle
  if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
  var strNewHTML = "<span " + imgID + imgClass + imgTitle
  + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
  + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
  + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
  img.outerHTML = strNewHTML
  i = i - 1
  };
  };
  };
  if (navigator.userAgent.indexOf("MSIE") > -1) {
  window.attachEvent("onload", co

解决方案 »

  1.   

    尽量不要使用PNG图像, 弄成GIF的
      

  2.   

    原文   http://www.nbman.cn/article.asp?id=100
    针对css背景png,实施如下。
    程序代码
    background-image: url(绝对路径/你的图.png)!important;/* FF IE7 */
    background-repeat: no-repeat;
    _filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='绝对路径/你的图.png'); /* IE6 */
    _background-image: none; /* IE6 */说明:
    Firefox、Opera、IE7 等完全支持 PNG 透明图片的浏览器,而 IE6 不能很好识别,所有我们可以通过这来定义Firefox、Opera、IE7 等浏览器中 PNG 图片的样式。如下:
    #png {background: url(绝对路径/images/bg.png) repeat;}而对于 IE6,我们都通过滤镜的方法来定义。我们通过只有 IE6 才识别的下划线(_),来定义 IE6 浏览器中的滤镜。如下:
    #png {
    _filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizinMethod='scale', xsrc="绝对路径/images/bg.png");
    _background:none;
    }这样综合起来的最后的解决方法就是:
    #png {
    background: url(绝对路径/images/bg.png) repeat;
    _filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizingMethod='scale', xsrc="绝对路径/images/bg.png");
    _background:none;
    }
    JS版
    程序代码
    <script language="JavaScript"> 
    function correctPNG() 
         {
         for(var i=0; i<document.images.length; i++)
            {
         var img = document.images[i]
         var imgName = img.src.toUpperCase()
         if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
            {
         var imgID = (img.id) ? "id='" + img.id + "' " : ""
         var imgClass = (img.className) ? "class='" + img.className + "' " : ""
         var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
         var imgStyle = "display:inline-block;" + img.style.cssText 
         if (img.align == "left") imgStyle = "float:left;" + imgStyle
         if (img.align == "right") imgStyle = "float:right;" + imgStyle
         if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle 
         var strNewHTML = "<span " + imgID + imgClass + imgTitle
         + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
            + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
         + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
         img.outerHTML = strNewHTML
         i = i-1
            }
            }
         }
    window.attachEvent("onload", correctPNG);
    </script>
      

  3.   

    #png {background: url(绝对路径/images/bg.png) repeat;}
    用png的时候一定要是绝对路径?