Page 1 of 1

What is this javascript for [solved]

Posted: Fri Mar 17, 2006 3:17 am
by matthijs
My js skills are really lacking unfortunately, so I turn to you for this hopefully simple question: what does this script do?

Code: Select all

<!--hide this script from non-javascript-enabled browsers
 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[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
 }
 // stop hiding -->
It's from a site I'm cleaning up. The site uses one frame so I guess it has to do something with that. I already ditched some rollover and image preloadingscripts but I'm not sure if this one is needed. Thanks!

Posted: Fri Mar 17, 2006 3:28 am
by Weirdan

Code: Select all

<!--hide this script from non-javascript-enabled browsers
// finds the element in the current frame given its name or id
// you can use <name>?<frame> notation to search for an element in another frame
 function MM_findObj(n, d) { //v3.0;     d - root element to search in
     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); 

     return x;
 }
 // stop hiding -->

Posted: Fri Mar 17, 2006 3:42 am
by matthijs
A thanks Weirdan. Sorry about the unreadable mess.

I think I understand the function now. It's used inside the image swap function and preload function:

Code: Select all

<script language="JavaScript">
<!--hide this script from non-javascript-enabled browsers
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[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
  return x;
}
/* Functions that swaps images. */
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];
	}
}
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;
}

/* Functions that handle preload. */
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];
	}
 }
}
// stop hiding -->
</script>
Am I correct?

Posted: Fri Mar 17, 2006 5:52 am
by Weirdan

Code: Select all

Am I correct?
You are.

[rant]Dreamweaver js sucks =( [/rant]

[SOLVED]

Posted: Fri Mar 17, 2006 6:06 am
by matthijs
Ok thats nice to know, thanks. Another 10 lines of code I can throw away :)
[rant]Dreamweaver js sucks =( [/rant]
Yes. And not only the js. I'm now going through page after page after page of beautiful code like this:

Code: Select all

</tr><tr bgcolor="#FFFFFF">
 <td>    <font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d">
 <font size="1" color="#000000"><b>
	 <font color="#990099" size="3" face="Arial, Helvetica, sans-serif">
 <font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d">   
<font size="1" color="#000000"><b>
 <font color="#990099" size="3" face="Arial, Helvetica, sans-serif">  
<font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d"><b>
</b><font size="1" color="#000000"><b>
<font color="#990099" size="3" face="Arial, Helvetica, sans-serif">
 <font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d">
	<font size="1" color="#000000"><b>  <font color="#990099" size="3" face="Arial, Helvetica, sans-serif">
	 <font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d"> 
 <font size="1" color="#000000"><b>
	 <font color="#990099" size="3" face="Arial, Helvetica, sans-serif">
 <font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d">
<font size="1" color="#000000"><b><font color="#990099" size="3" face="Arial, Helvetica, sans-serif">
 <font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d">
<font size="1" color="#000000"><b><font color="#990099" size="3" face="Arial, Helvetica, sans-serif">
<font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d">
 <font size="1" color="#000000"><b><font color="#990099" size="3" face="Arial, Helvetica, sans-serif">
<font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d">
<font size="1" color="#000000"><b><font color="#990099" size="3" face="Arial, Helvetica, sans-serif">
 <font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d"><b><br>
 <?php include ("banner.txt"); ?>
    </b></font></font></b></font></font></font></b></font></font>
 </font></b></font></font></font></b></font></font></font></b>
 </font></font></font></b></font></font></font></b></font></font>
 </font></b></font></font></font></b></font></font>
 <font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d">
 <font color="#990099" size="3" face="Arial, Helvetica, sans-serif">
 <font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d">
	 <font size="1" color="#000000"><b><font color="#990099" size="3" face="Arial, Helvetica, sans-serif">
 <font face="Arial, Helvetica, sans-serif" size="2" color="#203d8d"></font></font></b></font>
	 </font></font></b></font></font>
  </td> 
</tr>
         </table>
       <!-- #EndEditable --></td>
              </tr>
  </table>   </td>
        </tr>    </table>
 <table width="762" border="0" cellspacing="1" cellpadding="0" align="center">
  <tr>
No joke!

Mind you, this is just a tiny part of an average page. I only have to do about 80 of them :evil:

Posted: Fri Mar 17, 2006 7:13 am
by mickd
Wow, makes you think if it'll actually be faster just to write it out youself.