11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour !

je voudrais simplement récupérer les dimensions d'une image, qui ne possède ni d'attribut width et height dans la balise html, ni déclaration CSS.

J'ai cherché sur google mais pas de solution, pourtant je me suis dit qu'avec le JS ça serait possible de récupérer ces dimensions puisque le navigateur charge l'image avec les bonnes dimensions.

<img src="/images/uneImage.jpg" />

Modifié par ChrisG (04 Feb 2008 - 16:22)
Salut,

<img src="/images/uneImage.jpg" onload="alert(this.offsetWidth+'x'+this.offsetHeight);"/>


devrait te mettre sur la voie.
Bonjour !

merci, ça fonctionne parfaitement; mais je me demande : ne faut-il pas faire attention à la valeur de cette propriété, qui risque d'être differente selon firefox ou internet explorer (peut-être safari) car IE a des propriétés de modèles de boite propres (je pense surtout à IE 6) ?

Smiley sweatdrop
Si le bon doctype est bien présent ca ne devrait pas poser de soucis me semble-t-il. Si IE est en mode Quirks (pas de Doctype) ou standard (Doctype spécifié)... mais je ne suis sur de rien la dessus. Il doit y avoir ici des experts en la matière
Re !

j'ai mis en place un diaporama en javascript qui utilise cette propriété, mais le offsetWidth n'est pas appliqué la première fois sur le chargement d'une image, mais seulement lorsqu'on clique à nouveau (donc quand l'image est en cache).

function showTime() {
	var anchors = document.getElementsByTagName('a');
	for (var k=0;k<anchors.length;k++) {
		if ( ((anchors[k].href.substr(anchors[k].href.length-3)) == "JPG") || ((anchors[k].href.substr(anchors[k].href.length-3)) == "jpg") || ((anchors[k].href.substr(anchors[k].href.length-3)) == "png")) {
			anchors[k].href = 'javascript:showIt(\''+anchors[k].href+'\')';
		}
	}
}
function showIt(thisOne) {
	sp = document.createElement('div');
	sp.id = "displayer";
	document.getElementsByTagName('body')[0].appendChild(sp);
	var parag = document.createElement("img");
	if (document.all) {
		parag.src = thisOne;
		parag.style.visibility = "hidden";
	}
	else {
		parag.setAttribute("src", thisOne);
		parag.setAttribute("style", "visibility:hidden;");
	}
	parag.id = 'overview';
	document.getElementsByTagName("body")[0].insertBefore(parag, document.getElementsByTagName("body")[0].childNodes[0]);
	document.getElementById('overview').style.margin = " 0 0 0 -"+ (document.getElementById('overview').offsetWidth/2) + "px";
	document.getElementById('overview').style.visibility = "visible";
	document.onclick = function () {
		document.onclick = "";
		the_div = document.getElementById('displayer');
		the_div.parentNode.removeChild(the_div);
		the_div = document.getElementById('overview');
		the_div.parentNode.removeChild(the_div);
	}
}
if (window.addEventListener) {
	window.addEventListener('load', where_heading, false);
}
else if (window.attachEvent) {
	window.attachEvent('onload', where_heading);
}

Smiley biggol une idée ?
dommage pas d'éclairé pour nous renseigner "Si IE est en mode Quirks (pas de Doctype) ou standard (Doctype spécifié)..."