11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour, bonjour.

Voilà. Je souhaite découvrir un natural width d'une image mise en innerHTML dans une div créée par document.createElement.

Le seul problème c'est que lorsque je fais un alert de l'image.naturalWidth, l'alert me retourne 0.

Si je vais dans le DOM le naturalWidth ne vaut pas zéro. Avez vous une idée du pourquoi du comment ?


	var div_courante = document.getElementById("zone");
	var new_image = document.createElement("div");
		new_image.id = "test_1";
		new_image.innerHTML = "<img id='src1' src='"+image+"' />\r\n";
	div_courante.appendChild(new_image);


(ici la variable image vous l'avez compris contient l'adresse de l'image).

Si je fais un alert de document.getElementById("src1").naturalWidth c'est à ce moment que j'obtient zéro.

Si vous avez une idée... je suis preneur.

Rude
Modifié par ffwrude (08 Jan 2008 - 17:50)
As-tu essayé ceci pour voir si c'était mieux, à la place de ton innerHTML ?


...
var img = document.createElement('img');
img.setATtribute('src', image);
img.setAttribute('alt', 'texte alternatif');
new_image.appendChild(img);
...


A mon avis ça fonctionnera mieux, mais j'ai pas testé, donc je ne sais pas.
Je vais tester tout de suite. Je te tiens au courant.

Rude

EDIT : Bon... bah non il fait pareil...

J'ai fait un createElement IMG que j'ai "appendChild" dans la DiV écrite au dessus ...

et il fait pareil... => 0
Modifié par ffwrude (08 Jan 2008 - 16:07)
Alors la ...


while(document.getElementById("src"+nombre_de_div).naturalWidth == 0){
		document.title = document.getElementById("src"+nombre_de_div).naturalWidth;
	}
	setTimeout('vtfepurlm('+nombre_de_div+')',1);


Parce que quand y'en à marre y'à malabar...

J'atteint le message => ATTENTION !!!! Ce script est très bizarre voulez vous continuer à l'executer...

On va pas me faire croire que JS met plus de 30secondes pour trouver un naturalWidth.......
Il boucle un bout de temps ...

Rude
Modifié par ffwrude (08 Jan 2008 - 17:25)
Tant que l'image n'est pas chargée le naturalWidth vaudra 0 me semble t il... Tu pourrais essayer en mettant un évenement onload pour ton image genre :

new_image.innerHTML = '<img id="src1" src="'+image+'"  onload="alert(this.naturalWidth)"/>\r\n';


Je suis pas du tout sur de ce que j'avance c'est pour essayer de donner une piste... Je ne connaissait pas naturalWidth mais pour avoir cette info je remmettai l'image dans sa taille originale avec CSS et je demandais le offsetWidth. Cela dit je suis content d'apprendre qu'il y a une propriété qui le fait.
Modifié par skywalk3r (08 Jan 2008 - 17:34)
Non, je t'en prie grâce à toi j'ai découvert naturalWidth... en plus j'ai un peu de barbe... cela dit elle est discrète!