Sascha: Javascript Menü zu langsam :-(

Beitrag lesen

hi zusammen,

hab mir auch ein Javamenü aus dem internet geholt (von http://skripte.rabich.de/skripte/anwendungen/menue.html) leider ist es für einen 56Kmodem Benutzer total langsam..,.... kann ich da etwas an der Geschwindigkeit ändern ?

http://www.draischiibe.de

für Hilfe wäre ich dankbar.

Grüsse sascha

quellcode:

/*

================ Anwendung: Menue

Copyright (c) 2000 by DS. Alle Rechte vorbehalten.

Version:     2.3.1b Datum:       23.9.1999

Aenderungen: 23.2.2000 Optimierungen              15.3.2000 oeffne_menue_pfad() implementiert

Das Dokument enthaelt alle zentral zur Verfuegung stehenden Funktionen.

*/

// === Variablen (global) ===

var eintraege  = new Array() var bildname  = "Bild"

// === Parameter (Vorbelegung) ===

var body_bgcolor  = "FF0000" var body_background  = "" var body_text  = "FFFFFF" var body_link  = "FFFFFF" var body_alink  = "FFFFFF" var body_vlink  = "FFFFFF" var body_hover  = "CCCCFF" var a_underline  = false var menue_pre  = "<B><SMALL>" var menue_post  = "</SMALL></B>" var eintrag_pre  = "<EM><SMALL>" var eintrag_post  = "</SMALL></EM>" var menue_titel  = "<TABLE WIDTH="100%" CELLPADDING="2" CELLSPACING="0" BORDER="0" BGCOLOR="#CCCCFF">" +      "<TR ALIGN="CENTER">" +      "<TD><B><FONT COLOR="#FFFFFF">Menü</FONT></B></TD>" +      "</TR>" +      "</TABLE>" var menue_style  = "font-family: Verdana, Arial, sans-serif;" var rand   = 0 var bild_eintrag  = "normal.gif" var bild_menue_offen = "offen.gif" var bild_menue_geschlossen = "geschlossen.gif" var bild_breite  = 12 var bild_hoehe  = 12 var frame_name  = "menuetree" var extra   = true var extra_text_expand = "Aufbauen" var extra_text_collapse = "Abbauen" var extra_pre  = "<SMALL>" var extra_post  = "</SMALL>" var exclusive  = false var copyright  = true

// === Hilfsfunktionen ===

// Cookie lesen function read_cookie(cookie_name) {  var cookie_string = document.cookie  var cookie_array = cookie_string.split(";")  var array_size  = cookie_array.length  var cookie_teile

var i = 0

for(i = 0; i < array_size; i++)  {   cookie_teile = cookie_array[i].split("=")   if(cookie_teile[0].substring(0, 1) == " ")    cookie_teile[0] = cookie_teile[0].substring(1, cookie_teile[0].length)   if(cookie_teile[0] == cookie_name)    return unescape(cookie_teile[1])  }

return "" }

// Cookie schreiben function write_cookie(cookie_name, cookie_wert, gueltigkeitszeitraum) {  if(gueltigkeitszeitraum)  {   var ablauf_datum = new Date()

ablauf_datum.setTime(ablauf_datum.getTime() + gueltigkeitszeitraum)   document.cookie = cookie_name + "=" + escape(cookie_wert) + "; " +      "expires=" + ablauf_datum.toGMTString()  }  else   document.cookie = cookie_name + "=" + escape(cookie_wert) }

// Knoten ermitteln function set_nodes() {  var i

for(i = 0; i < (eintraege.length - 1); i++)   if(eintraege[i + 1].level > eintraege[i].level)   {    eintraege[i].node =  true    eintraege[i].open =  false   } }

// Aufnahme eines neuen Menueeintrags function neuer_eintrag(level, name, url, target, desc, image, image_open) {  this.level  = level  this.name  = name  this.url  = url  this.target  = target  this.node  = false  this.open  = false  this.description = desc  this.image  = image  this.image_open  = image_open }

// Eintrag vornehmen und Verzweigungsermittlung function eintrag(level, name, url, target, desc, image, image_open) {  var pos = eintraege.length

if(level < 1)  {   alert("Level-Werte bitte ab 1 anlegen!")   return  }

if(arguments.length < 2)  {   alert("Es muessen mindestens die ersten beiden Argumente angegeben werden.")   return  }

eintraege[pos] = new neuer_eintrag(level,       name,       (arguments.length > 2) ? url : null,       (arguments.length > 3) ? target : null,       (arguments.length > 4) ? desc : null,       (arguments.length > 5) ? image : null,       (arguments.length > 6) ? image_open : null) }

// Untermenue oeffnen oder schliessen function submenue(nr) {  // Alle Untermenues schliessen (ausser nr)  function close_submenues(nr)  {   var i   for(i = 0; i < eintraege.length; i++)    if((i != nr) && eintraege[i].node)     eintraege[i].open = false  }

// Untermenue nr exklusiv oeffnen  function open_submenues(nr)  {   function open_super_level(nr, lvl)   {    if((nr == 1) || (lvl < 1))     return

var i    for(i = nr - 1; i >= 0; i--)    {     if((eintraege[i].level == lvl) && eintraege[i].node)     {      eintraege[i].open = true      open_super_level(i, lvl - 1)      return     }    }    return   }

open_super_level(nr, eintraege[nr].level - 1)  }

eintraege[nr].open = !eintraege[nr].open  if((eintraege[nr].target != null) && (eintraege[nr].url != null))   frames[eintraege[nr].target].location.href = eintraege[nr].url  if(eintraege[nr].open && exclusive)  {   close_submenues(nr)   open_submenues(nr)  }  write_menue() }

// Alle Untermenues oeffnen function expand() {  var i

for(i = 0; i < eintraege.length; i++)   if(eintraege[i].node)    eintraege[i].open = true  write_menue() }

// Alle Untermenues schliessen function collapse() {  var i

for(i = 0; i < eintraege.length; i++)   if(eintraege[i].node)    eintraege[i].open = false  write_menue() }

// Kommentar in der Statuszeile anzeigen function show(comment) {  status = comment }

// Kommentar aus der Statuszeile entfernen function hide() {  status = "" }

// Ausgabe eines Menueeintrags function ausgabe(nr) {  with(self[frame_name].document)  {   var i   var tag_a_anfang = ""   var tag_a_ende = ""   var tags_pre = ""   var tags_post = ""   var tag_img  = ""   var titel  = ""   var bild  = ""

write("<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">\n<TR ALIGN="LEFT" VALIGN="CENTER">\n<TD>")

// Platzhalter   if(eintraege[nr].level > 1)    write("<IMG SRC="leer.gif" WIDTH="" + String(bild_breite * (eintraege[nr].level - 1)) + "" HEIGHT="" + String(bild_hoehe) + "" BORDER="0" ALT="">")

tag_a_ende = "</A>"

// Untermenues / normaler Eintrag   if(eintraege[nr].node)   {    titel = eintraege[nr].description ? eintraege[nr].description : eintraege[nr].name    bild = eintraege[nr].open ?      (eintraege[nr].image_open ? eintraege[nr].image_open : bild_menue_offen) :      (eintraege[nr].image ? eintraege[nr].image : bild_menue_geschlossen)

tags_pre = menue_pre    tags_post = menue_post    tag_a_anfang = "<A " +       "HREF="javascript:parent.submenue(" + String(nr) + ")" " +       "onMouseOver="parent.show('" + titel + "'); return true" " +       "onMouseOut="parent.hide()" " +       "TITLE="" + titel + """ +       ">"

}   else   {    titel = eintraege[nr].description ? eintraege[nr].description : eintraege[nr].name    bild = eintraege[nr].image ? eintraege[nr].image : bild_eintrag

tags_pre = eintrag_pre    tags_post = eintrag_post    tag_a_anfang = "<A " +       "HREF="" + eintraege[nr].url + "" " +       "onMouseOver="parent.show('" + titel + "'); return true" " +       "onMouseOut="parent.hide()" " +       (eintraege[nr].target ? (" TARGET="" + eintraege[nr].target + "" ") : "") +       "TITLE="" + titel + """ +       ">"

}

tag_img = "<IMG " +     "SRC="" + bild + "" " +     "WIDTH="" + String(bild_breite) + "" " +     "HEIGHT="" + String(bild_hoehe) + "" " +     "BORDER="0" " +     "NAME="" + bildname + String(nr) + "" " +     "ALT="" + titel + """ +     ">"

write(tag_a_anfang + tag_img + tag_a_ende)   write("</TD>\n<TD>")   write(tag_a_anfang + tags_pre + eintraege[nr].name + tags_post + tag_a_ende)

writeln("</TD>\n</TR>\n</TABLE>")

} }

// Ausgabe aller Eintraege eines Levels und eines Untermenues function ausgabe_eintraege(lvl, start) {  var i

with(self[frame_name].document)  {   for(i = start; i < eintraege.length; i++)   {    if(eintraege[i].level < lvl)     return    if(eintraege[i].level == lvl)    {     ausgabe(i)     if(eintraege[i].node)      if(eintraege[i].open)       ausgabe_eintraege(lvl + 1, i + 1)    }   }  } }

// Menuedokument schreiben (dynamisches Dokument erzeugen) function write_menue() {  with(self[frame_name].document)  {   open("text/html", "replace")

// Kopf   writeln("<HTML>\n<HEAD>\n<TITLE>Menü</TITLE>")   writeln("<!--\n\nGeneriert mit Hilfe des Menueskripts\nvon Dietmar Rabich, Duelmen.\n\nhttp://www.rabich.de\n\n-->")   writeln("<META NAME="AUTHOR" CONTENT="Dietmar Rabich">")   writeln("<META NAME="COPYRIGHT" CONTENT="Dietmar Rabich, Dülmen">")   writeln("<META NAME="ROBOTS" CONTENT="NONE">")   writeln("<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; CHARSET=iso-8859-1">")   writeln("<STYLE TYPE="text/css">\n<!--")   if(!a_underline)    writeln("A {text-decoration: none;}")   writeln("A:hover {color: #" + body_hover + ";}")   if(menue_style != "")    writeln("BODY, A, P, TD, H1, H2, H3, H4, H5, H6 {" + menue_style + "}")   writeln("//-->\n</STYLE>")   writeln("</HEAD>")

// Koerper   writeln("<BODY BGCOLOR="#" + body_bgcolor + "" TEXT="#" + body_text +     "" LINK="#" + body_link + "" ALINK="#" + body_alink +     "" VLINK="#" + body_vlink + "" LEFTMARGIN="" + rand +     "" TOPMARGIN="" + rand + "" MARGINWIDTH="" + rand +     "" MARGINHEIGHT="" + rand + """ +     (((body_background != "") && (body_background != null)) ? (" BACKGROUND="" + body_background + """) : "" ) + ">")   if(menue_titel != "")    writeln(menue_titel)   write("<P>")   ausgabe_eintraege(1, 0)   writeln("</P>")   if(extra)   {    write("<P ALIGN="CENTER">" + extra_pre)    if(!exclusive)     write("<NOBR>[ <A HREF="javascript:parent.expand()" TITLE="" + extra_text_expand + "">" + extra_text_expand + "</A> ]<WBR></NOBR> ")    write("<NOBR>[ <A HREF="javascript:parent.collapse()" TITLE="" + extra_text_collapse + "">" + extra_text_collapse + "</A> ]<WBR></NOBR>")    writeln(extra_post + "</P>")   }   if(copyright)   {    write("<HR SIZE="2" WIDTH="90%" ALIGN="CENTER" COLOR="" + body_text + "">\n<P ALIGN="CENTER"><SMALL><SMALL>")    write("Copyright © 2000 by <A HREF="http://www.rabich.de/" TARGET="_blank">Dietmar Rabich</A>, Dülmen.<BR>")    write("Alle Rechte vorbehalten.")    writeln("</SMALL></SMALL></P>")   }   writeln("</BODY>")   writeln("</HTML>")

close()  }

// Menues in Cookie merken  if(rebuild)  {   var s = ""   var i

for(i = 0; i < eintraege.length; i++)    if(eintraege[i].node)     if(eintraege[i].open)      s += ((s == "") ? "" : ",") + String(i)   write_cookie("OpenNodes", s, 1000 * 60 * 60 * 24 * 92)  } }

// === Menuefunktionen ==

// Ausgabe des kompletten Menues function menue() {  set_nodes()

// Menues/Cookie auswerten  if(rebuild)  {   var s = read_cookie("OpenNodes")   var sarr = s.split(",")   var i   var nr

for(i = 0; i < sarr.length; i++)   {    nr = parseInt(sarr[i])    if(!isNaN(nr))     if(eintraege[nr].node)      eintraege[nr].open = true   }  }

write_menue() }

// Menue mit IDs oeffnen function oeffne_menue_pfad(ids) {  set_nodes()

var sarr = ids.split(",")  var i  var nr

for(i = 0; i < sarr.length; i++)  {   nr = parseInt(sarr[i])   if(!isNaN(nr))    if(eintraege[nr].node)     eintraege[nr].open = true  }

write_menue() }

// === EOF ===