javascript - 在 IE6 中应用透明 PNG 的 AlphaImageLoader

标签 javascript css filter internet-explorer-6

一段时间以来,我一直在尝试让 AlphaImageLoader 在 IE6 中与我的 s 一起工作。

我尝试的解决方案之一建议先应用 AlphaImageLoader,然后再应用 Opacity(0)。这实际上会将透明 png 置于背景中,并使原始 png 消失。当我尝试这个时,图像就消失了。省略 Opacity 滤镜没有效果,png 仍然不透明。有人来帮忙吗?

                                                    <img id="NavBox_topLeft.png" src="#" width="17" height="34"  class="png summaryimgsrc1"

style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../../../1.75/commondata/sharedimages/summary/NavBox_topLeft.png', sizingMethod='scale');"/>
    </td>

我正在标记中尝试这个来测试。最终它将与 JS 一起添加。

谢谢

最佳答案

试一试:

// Transparent PNG for IE
// http://vbence.web.elte.hu/ie_png_alpha.html

function alphaFixIE() {
    var s, i, j;

    // IMG
    var els = document.getElementsByTagName("IMG");
    for (i=0; i<els.length; i++) {
        s = els[i].src;
        if (s.toLowerCase().indexOf(".png") != -1) {
            els[i].src = "spacer.gif";
            els[i].style.filter += "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + s + "', sizingMethod=image);";
        }
    }

    // CSS: background
    for (i=0; i<document.styleSheets.length; i++) {
        var pos = document.styleSheets[i].href.lastIndexOf("/");
        var cssDir = (pos != -1) ? document.styleSheets[i].href.substring(0, pos + 1) : "";
        for (j=0; j<document.styleSheets[i].rules.length; j++) {
            var style = document.styleSheets[i].rules[j].style;
            if (style.backgroundImage.toLowerCase().indexOf(".png") != -1) {
                var filename = style.backgroundImage.substring(4, style.backgroundImage.length - 1);
                if (filename.indexOf("http://") != 0 && filename.indexOf("/") != 0)
                    filename = cssDir + filename;
                style.backgroundImage = "none";
                style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + filename + "', sizingMethod='crop');";
            }
        }
    }
}

if (navigator.userAgent.indexOf("MSIE") != -1 && navigator.userAgent.indexOf("Windows") != -1)
    window.attachEvent("onload", alphaFixIE);

注意:不要忘记将 spacer.gif 添加到同一目录。

(也许浏览器/功能检测部分可以改进一点,但它有效)

关于javascript - 在 IE6 中应用透明 PNG 的 AlphaImageLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3207674/

相关文章:

javascript - Angularjs:如何应用 NOT 过滤器?

javascript - 使用 require.js 依赖注入(inject)

javascript - ng-click 只影响它所在的​​元素

javascript - Angularjs:在 ng-include 中获取 document.querySelectorAll

PHP - 如何在 ci 中链接 View 中的其他页面

filter - Ansible - 否定过滤器

javascript - 关于 Polymer 最佳实践的几个问题

html - 使用 div 元素交替 block 和内联行为?

javascript - 为什么我的淡入淡出不能使用 jquery 工作?

python - 压缩 numpy 数组的有效方法(python)