oImg.setAttribute('width', '1px');
px
только для CSS. Используйте либо:
oImg.width = '1';
чтобы установить ширину через HTML, или:
oImg.style.width = '1px';
установить его через CSS.
Обратите внимание, что старые версии IE не создают правильный образ document.createElement()
, а старые версии KHTML не создают правильный узел DOM new Image()
, поэтому, если вы хотите быть полностью обратно совместимыми, используйте что-то вроде:
// IEWIN boolean previously sniffed through eg. conditional comments
function img_create(src, alt, title) {
var img = IEWIN ? new Image() : document.createElement('img');
img.src = src;
if ( alt != null ) img.alt = alt;
if ( title != null ) img.title = title;
return img;
}
Также будьте осторожны, document.body.appendChild
если скрипт может выполняться, когда страница находится в процессе загрузки. Вы можете получить изображение в неожиданном месте или получить странную ошибку JavaScript в IE. Если вам нужно иметь возможность добавить его во время загрузки (но после <body>
запуска элемента), вы можете попробовать вставить его в начале тела, используя body.insertBefore(body.firstChild)
.
Чтобы сделать это незаметно, но при этом сохранить изображение, фактически загруженное во всех браузерах, вы можете вставить абсолютно позиционированное вне страницы <div>
в качестве первого дочернего элемента тела и поместить туда любые изображения для отслеживания / предварительной загрузки, которые вы не хотите видеть. .