我正在将此脚本用于 IE6 的 PNG 修复。
我注意到,当我克隆一个元素时,克隆的 PNG 是未修复的,即使它们附加了正确的类,我无法重新应用修复。我正在使用 jquery 克隆一个元素,并且出于广泛的原因必须使用 clone(false,false) ...有没有办法在附加克隆后将修复应用于新元素?再次调用 DD_belatedPNG.fix(".pngfix") 似乎不起作用。
我正在将此脚本用于 IE6 的 PNG 修复。
我注意到,当我克隆一个元素时,克隆的 PNG 是未修复的,即使它们附加了正确的类,我无法重新应用修复。我正在使用 jquery 克隆一个元素,并且出于广泛的原因必须使用 clone(false,false) ...有没有办法在附加克隆后将修复应用于新元素?再次调用 DD_belatedPNG.fix(".pngfix") 似乎不起作用。
与其使用 png 修复,不如使用 IE 支持的透明 PNG(带有 alpha 的 8 位调色板)。如果您使用的是 Mac, ImageAlpha将为您执行此操作,否则您可以使用pngquant(ImageAlpha 的基础)为您执行此操作。
Javascript/IE Filter 类型的东西不需要解决这个问题,应该避免。
此解决方案适用于 img 元素
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
body {
background:#0000FF;
}
</style>
<script type="text/javascript" language="javascript" src="jquery.min.js"></script>
<script type="text/javascript" language="javascript" src="DD_belatedPNG_0.0.8a.js"></script>
<script>
$(document).ready(function () {
function imageClickHandler () {
var $newA = $("<a></a>")
var $newImg = $(this).find('img').clone(false,false);
$newImg.attr("style","");
$newA.append($newImg);
$newA.click(imageClickHandler);
$(this).parent().append($newA);
DD_belatedPNG.fix('img');
}
DD_belatedPNG.fix('img');
$('a').click(imageClickHandler);
});
</script>
</head>
<body>
<a><img src="image.png" /></a>
</body>
</html>
编辑 此解决方案适用于 bg 元素
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
body {
background:#0000FF;
}
a {
display:inline-block;
//display:inline;
zoom:1;
width:512px;
height:512px;
background:url(image.png) no-repeat center center;
text-decoration:none;
outline:none;
}
</style>
<script type="text/javascript" language="javascript" src="jquery.min.js"></script>
<script type="text/javascript" language="javascript" src="DD_belatedPNG_0.0.8a.js"></script>
<script>
$(document).ready(function () {
function imageClickHandler () {
var $newA = $(this).clone(false,false);
$newA.removeAttr("style isImg vmlInitiated vmlBg");
$newA.click(imageClickHandler);
$(this).parent().append($newA);
DD_belatedPNG.fix('a');
}
DD_belatedPNG.fix('a');
$('a').click(imageClickHandler);
});
</script>
</head>
<body>
<a></a>
</body>
</html>