oImg.setAttribute('width', '1px');
pxé apenas para CSS. Use:
oImg.width = '1';
para definir uma largura por meio de HTML ou:
oImg.style.width = '1px';
para configurá-lo por meio de CSS.
Observe que as versões antigas do IE não criam uma imagem adequada com document.createElement(), e as versões antigas do KHTML não criam um Nó DOM adequado com new Image(), então se você quiser ser totalmente compatível com versões anteriores, use algo como:
// 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;
}
Também tenha um pouco de cuidado document.body.appendChildse o script pode ser executado quando a página está no meio do carregamento. Você pode acabar com a imagem em um lugar inesperado ou um erro estranho de JavaScript no IE. Se você precisar adicioná-lo no momento do carregamento (mas depois que o <body>elemento for iniciado), poderá tentar inseri-lo no início do corpo usando body.insertBefore(body.firstChild).
Para fazer isso de forma invisível, mas ainda com a imagem realmente carregada em todos os navegadores, você pode inserir uma posição absolutamente fora da página <div>como o primeiro filho do corpo e colocar quaisquer imagens de rastreamento / pré-carregamento que você não deseja que sejam visíveis lá .