oImg.setAttribute('width', '1px');
px
est pour CSS seulement. Utilisez l'un ou l'autre :
oImg.width= '1';
pour définir une largeur par le biais du HTML, ou :
oImg.style.width= '1px';
pour le définir par le biais de CSS.
Notez que les anciennes versions d'IE ne créent pas une image correcte avec document.createElement()
et les anciennes versions de KHTML ne créent pas un nœud DOM correct avec la fonction new Image()
Donc, si vous voulez être entièrement compatible avec le passé, utilisez quelque chose comme.. :
// 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;
}
Méfiez-vous aussi un peu de document.body.appendChild
si le script peut s'exécuter alors que la page est en cours de chargement. Vous pouvez vous retrouver avec l'image à un endroit inattendu, ou une erreur JavaScript bizarre sur IE. Si vous devez être en mesure de l'ajouter au moment du chargement (mais après l'exécution de la commande <body>
a commencé), vous pourriez essayer de l'insérer au début du corps en utilisant body.insertBefore(body.firstChild)
.
Pour réaliser cette opération de manière invisible tout en permettant à l'image de se charger dans tous les navigateurs, vous pouvez insérer un fichier de type "absolument positionné hors de la page". <div>
comme premier enfant du corps et placez-y toutes les images de suivi/préchargement que vous ne voulez pas voir.