我使用以下代码来修复IE6的PNG问题(是的,我们确实有一些访问者使用IE6 :()...代码似乎用空白图像替换.png图像但是似乎没有正确运行过滤器...任何想法为什么会失败?谢谢
var blank = new Image();
blank.src = 'img/blank.gif';
$(document).ready(function() {
var badBrowser = (/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32");
if (badBrowser) {
//alert('bad browser');
// get all pngs on page
$('img[src$=".png"]').each(function() {
if (!this.complete) {
this.onload = function() { fixPng(this) };
} else {
fixPng(this);
}
});
}
});
function fixPng(png) {
// get src
var src = png.src;
// set width and height
if (!png.style.width) { png.style.width = $(png).width(); }
if (!png.style.height) { png.style.height = $(png).height(); }
// replace by blank image
png.onload = function() { };
png.src = blank.src;
// set filter (display original image)
png.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
}
答案 0 :(得分:1)
在所有评论说不打扰做任何事情之后,一个可能的实际答案:
大多数剩余的IE6用户都是因为某种原因无法升级的公司。
可能无法升级,但大多数人都非常了解IE6提出的主要安全问题,并尽可能地尝试降低风险。
为缓解IE6风险,可以采取的一个关键措施是禁止浏览器运行ActiveX,至少对于外部互联网上的站点而言(内部Intranet站点上的activeX插件通常是其中的原因之一)#39 ; t升级)。
您会注意到filter
样式使用ActiveX来发挥其魔力。
因此,如果禁用ActiveX,则意味着filter
样式不起作用。这将打破你的pngfix。 (它还打破了很多其他的东西,包括大多数Ajax代码,所以这些用户通常会有非常破碎的互联网体验。)
值得重新考虑的是,对于已关闭ActiveX的IE6用户,没有其他解决方案可以解决PNG错误。如果你有这个位置的用户,那么唯一的办法是回到2001年并使用GIF代替。
你可以尝试一些其他的png修复脚本 - 有很多它们,我知道有些比其他的更好 - 但是在一天结束时我会回到原来的评论并建议只为IE6用户留下图形渲染。无论如何,他们的互联网体验将被打破,如果一个网站可以使用,它就是奖金;一些渲染故障不会让它们脱落。