oImg.setAttribute('width', '1px');
px
est pour CSS uniquement. Utilisez soit:
oImg.width = '1';
pour définir une largeur via HTML, ou:
oImg.style.width = '1px';
pour le définir via CSS.
Notez que les anciennes versions d'IE ne créent pas une image appropriée avec document.createElement()
, et les anciennes versions de KHTML ne créent pas un nœud DOM approprié avec new Image()
, donc si vous voulez être entièrement rétrocompatible, 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 également un peu document.body.appendChild
si le script peut s'exécuter car la page est en cours de chargement. Vous pouvez vous retrouver avec l'image dans un endroit inattendu, ou une erreur JavaScript étrange sur IE. Si vous avez besoin de pouvoir l'ajouter au moment du chargement (mais après le <body>
démarrage de l' élément), vous pouvez essayer de l'insérer au début du corps en utilisant body.insertBefore(body.firstChild)
.
Pour ce faire de manière invisible tout en conservant l'image chargée dans tous les navigateurs, vous pouvez insérer un élément absolument positionné hors de la page en <div>
tant que premier enfant du corps et y placer toutes les images de suivi / préchargement que vous ne voulez pas voir. .