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>
как первый дочерний элемент тела и поместить любые изображения отслеживания / предварительной загрузки, которые вы не делаете хочу быть там видимым.