Это не проверено, но вот мое решение jQuery, которое должно работать.Он в основном проверяет все элементы img для расширения .png, затем проверяет все элементы, кроме img, для фонового изображения с расширением .png
Возможно, вам потребуется добавить дополнительный код, чтобы проверить свойство фона CSS, а также фон-образ.С помощью селектора body * я мог бы представить много лишних затрат на страницах с большим количеством элементов, но я с вами, мне все равно, сколько времени пользователям IE6 потребуется для загрузки страницы, если они не заботятся об обновлении своего браузера
$(function() {
$('img').each(function() {
if(this.src.split('.').pop() == 'png') {
DD_belatedPNG.fixPng(this)
}
});
$('body *:not(img)').each(function() {
if($(this).css('background-image').split('.').pop().replace(/("|\')\)/,'') == 'png') {
DD_belatedPNG.fixPng(this);
}
});
});
РЕДАКТИРОВАТЬ: Я нашел это довольно интересной задачей, поэтому написал чистое решение JavaScript.Его нужно запустить, когда DOM будет готов, поэтому, если вы действительно не хотите использовать jQuery или другую инфраструктуру с функцией DOM ready, вам придется использовать метод Дина Эдвардса, например:
document.write('<script type="text/javascript" id="domready" defer="defer" src="javascript:void(0)"><\/script>');
document.getElementById("domready").onreadystatechange = function() {
if (this.readyState == "complete") {
var imgs = document.getElementsByTagName('img')
for(i=0; i < imgs.length; i++) {
if(imgs[i].src.toLowerCase().search(/\.png$/) != -1) {
DD_belatedPNG.fixPng(imgs[i]);
}
}
var children = document.body.getElementsByTagName('*');
for(i=0; i < children.length; i++) {
var bg = children[i].currentStyle.backgroundImage;
if(bg != 'none' && bg.toLowerCase().search(/\.png("|\')?\)$/) != -1) {
DD_belatedPNG.fixPng(children[i]);
}
}
}
}