Was hat der Code zu bedeuten? Erklaerung gesucht!

coolthiam

nicht mehr wegzudenken
Hi Leute!
Ich habe ne Frage zu diesem Codebschnitt hier (stammt von www.harrisons-peaks.com)
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.indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a;}}
}
Ich versteh den nicht so richtig. Bei seiner Homepage bleibt ja sein Logo immer da, wird also nicht immer neu geladen. Erreicht er das mit diesem Code?
Beim Body steht dann
<!-- preload images for rollovers -->
<body onLoad="MM_preloadImages('../images/home_over.gif','../images/trav_over.gif','../images/photo_over.gif','../images/fun_over.gif')">

<!-- table for page logo -->
<table align="center" width="745" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#ffffff" colspan="2" align="center" valign="bottom"><img src="../images/hpname.gif" width="745" height="80" border="0" alt="www.harrisons-peaks.com"></td></tr></table><br>

Was heisst denn das MM_ immer?
Danke im Voraus
thiam
 
Für mich sieht das alles aus wie ein automatisch durch ein M$ Progamm generierter HTML/Javascript Code, um einen einfachen Rollover Effekt zu erreichen, den man mittels CSS1/2 ganz ohne JS erreichen könnte...

Als erstes werden dort diverse Bilder mittels Javascript in ein Array vorgeladen, damit sie hinterher vermeintlich ohne nachladen zur Verfügung stehen sollen (klappt aber beim IE nicht wirklich ohne Nachladen).

Das "MM_" heisst eigentlich garnichts, man kann in ECMAScript jeden Namen für eine Variable vergeben, da könnte genausogut "schnubbelwutz_" stehen


Öhmmm... was war eigentlich noch einmal die genaue Frage? ;)

Naja, um das ganze ein wenig durchsichtiger zu machen:
Da hat irgendwer eines der zu 1000en heumgeisternden Standardscripts verwendet um seine Seite aufzupeppen, ohne eigentlich zu wissen, was er dort macht....


irt.org
oder ähnliche Seiten sind evtl eine gute Startadresse um die Infos zu erhalten, die man benötigt um solche Scripts zu analysieren....
 
MM_ kommt von MacroMedia - wurde mit Dreamweaver erstellt.

Und wie Quhno schrieb, das ist ein preload-Script für einen Mouse-over-Effekt.

Oben ist die eigentliche Laderoutine, <body onload enthält die Liste mit den benötigten Bildern. Mit dieser Liste wird auch das Array skaliert (Anzahl Bilder).

Konkret gehört da aber mehr zu:
<script language="JavaScript">
<!--
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a)&&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.indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a;}}
}

function MM_findObj(n, d) { //v3.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[n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers.document); 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))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>


1. erste Bild wieder anzeigen
2. ist preload
3. unbekannt
4. swapper (zweites Bild anzeigen))

Benutzt wird das hier:
<td align="center" width="149"><a href="photos/picsndex.htm" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Photos','','images/phot_over.gif',1)"><img name="Photos" border="0" src="images/phot_out.gif" width="149" height="25"></img></a></td>

Allerdings wage ich zu beweifeln, das der Autor so richtig weiss, was er da verzapft hat, er fand es wohl einfach nur schick. Denn so irre Auswirkungen hat das bei mir komischerweise nicht, bei mir ändert sich nur die Textfarbe im Menü - geht auch einfacher.
 
Oben