Skalierbare JavaScript TreeNavigation gesucht!
Ingo Helmke
- javascript
0 MichelM
Hallo,
ich suche für eine Anwendung einen JS tree, der im Extremfall
mehrere 1000 Items enthalten kann. Tree-Lösungen wie www.treeview.net
stoßen ja sehr schnell an ihre Grenzen, was sich darin äußert, daß
die Performance entweder extrem leidet oder aber der Browser ganz einfriert.
Wer kennt eine Lösung, die entsprechend viele Items enthalten kann???
Danke,
Ingo.
Hallo,
leider ist es so, das hier für jedes Item ja ein DIV/Layer-Tag benötigt wird. MIt document.write ist das bei 1000 items nicht möglich, Du musst also bei so einer Riesenmenge alle Tags manuell schreiben oder mit PHP erzeugen lassen. document.createElement wäre zwar eine schnellere Lösung als document.write, hat aber noch nicht die Verbreitung gefunden. Demo, die ewig zum Laden braucht: http://www.webcockroaches.onlinehome.de/display.html
Daher wäre es nötig, mehrere Tree-Menues zu verwenden, die bei einem Klick nachgelden werden. In den Links zum Öffnen der Unterkategorien des Tree-Menues bzw. des ersten Hauptastes baust Du dann einen Aufruf ein. Da musst Du allerdings mit frames arbeiten.
onClick="window.parent.frames[1].location.href='menue2.html?ausgeklappt1,ausgeklappt4,aktiv5'
Hinter dem Fragezeichen gibst Du dann den Menuestatus ein, den Du im zwieten Script mit location.search abfragen kannst. So geht keine Menueeinstellung verloren.
Eine andere Möglichkeit, jedoch nur für Netscape 6-7 und IE ab 4.5 wäre das dynamische Umschreiben der Tags mit document.LayerID.innerHTML, somit wäre das dann kein echtes Treemenue mehr, aber wenigstens ein realistischer Kompromiss.
Der Aufwand der Programmierung ist erheblich, und die Ladezeit sehr hoch, weil alle Daten in einer JS-Varibalendeklaration gespeichert werden müssen. Der Haken hierbei: Enormer Speicherplatzbedarf, der die Grenzen eines Browsers oder eines System sprengen könnte.
Daher müsste auch hier jeweils ein Menueteil nachgeladen werden.
Ein fertiges script gibt es also hierzu nicht.
Also, Du kannst mir auch mailen.
Ciao
Michael