11486 sujets

JavaScript, DOM et API Web HTML5

Bonjour

Avant d'être repris par Adobe, Dreamweaver était développé par MacroMedia, qui s'était doté de tas de gadgets prétendument pour faciliter la création de sites. Le résultat c'est qu'on récupère des années après des trucs compliqués pour faire des choses simples, et quand il faut les modifier, ne serait-ce que pour que ça marche sur des tablettes, on se gratte la tête en se demandant par quel bout aborder le problème.

Je récupère en particulier des dizaines de pages contenant des appels à des fonctions "MM_" (MM pour MacroMedia) qui sont un peu ésotériques. Il s'agit de faire du remplacement d'images, choses qu'on fait très simplement aujourd'hui avec du CSS.
J'ai recherché sur Internet si ces fonctions étaient connues, la réponse est positive mais je n'ai pas trouvé une explication de texte.
Quelqu'un pourrait il m'aider à comprendre comment ça marche?
Voici le code en question, décompressé et indenté pour en faciliter (???) la lecture
function MM_swapImgRestore() { //v3.0
	var i, x, a = document.MM_sr;
	for(i = 0; a && i < a.length && (x = a[ i]) && x.oSrc; i++) x.src = x.oSrc;
}
function MM_preloadImages() { //v3.0
	var d = document;
	if(d.images){
		if(!d.MM_p) d.MM_p = new Array();
		var i, j = d.MM_p.length, a = MM_preloadImages.arguments;
		for(i = 0; i < a.length; i++)
		if (a[ i].indexOf("#")! = 0){
			d.MM_p[j] = new Image;
			d.MM_p[j++].src = a[ i];
		}
	}
}
function MM_findObj(n,  d) { //v4.0
	var p, i, x;
	if(!d) d = document;
	if((p = n.indexOf("?"))>0 && parent.frames.length) {
		d = parent.frames[n.substring(p+1)].document;
		n = n.substring(0, p);
	}
	if(!(x = d[n]) && d.all) x = d.all[n];
	for (i = 0; !x && i < d.forms.length; i++) x = d.forms[ i][n];
	for(i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[ i].document);
	if(!x  &&  document.getElementById) x = document.getElementById(n);
	return x;
}
function MM_swapImage() { //v3.0
	var i, j = 0, x, a = MM_swapImage.arguments;
	document.MM_sr = new Array;
	for(i = 0; i < (a.length-2); i+= 3)
	if ((x = MM_findObj(a[ i]))! = null){
			document.MM_sr[j++] = x;
	if(!x.oSrc) x.oSrc = x.src;
	x.src = a[ i+2];
	}
}

Modifié par PapyJP (02 Sep 2015 - 16:47)
Laissez tomber!
J'ai analysé le code, c'est plein de choses obsolètes dont même moi je ne savais plus ce que c'était!
En gros ça dit simplement de remplacer une image par une autre, il n'y a que deux arguents qui comptent, le "name" de la balise <img> (aujourdh'ui on mettrait "id" mais ça a toujours l'air de marcher) et la valeur à mettre dans lattribut src de cette balise.
Je pense qu'il suffit décrire

     document.getElementByName(name).src = url;

Modifié par PapyJP (02 Sep 2015 - 17:42)