【发布时间】:2013-01-31 20:40:53
【问题描述】:
我正在使用以下代码来修复 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')";
}
【问题讨论】:
-
教育那些 IE6 用户。强制升级它们。降低开发成本。让网络变得更美好。
-
如果我没记错的话,IE6 可以正常显示 PNG,除非没有透明度。如果那些 IE6 用户看到你的网站没有透明的图形,那会是多大的灾难?网站还能用吗?如果是这样,我的建议是保持这种状态。任何仍在使用 IE6 的人现在都会非常习惯于看到有重大问题的网站;他们不会因缺少透明度而感到冒犯。如果您的网站仍然可供他们使用,那么尽管出现任何渲染问题,他们都会使用它。因此,即使您仍然有 IE6 用户,也要让他们拥有损坏的图形。他们不会在意的。
-
在我看来,我们不应该仍然支持 IE6。 0.9% 的英国人使用 IE6,0.4% 的美国人仍在使用它。甚至微软也想杀了它-source。我推荐:Educate users that their browser is out of date.
-
顺便说一句,有很多不同的 iepngfix 脚本在运行;如果这个不适合您,最快的解决方案可能就是尝试另一个。
-
是的,我们已经通知这些用户我们不支持这个浏览器......无论如何,仍然有任何想法为什么该代码不起作用?
标签: javascript jquery internet-explorer-6 iepngfix