Sie haben einen neuen Browser? Sie wundern sich, weshalb ich auf der Page eine Entwicklung verwende, die nur mit JavaScript läuft und auch dies nur in den neuesten Versionen (getestet erst mit 1.1 NS3+/IE4+). Lesen Sie hier alles über die Technik hinter dem Treeview, über seine Herkunft und lernen Sie viel über browserübergreifendes Programmieren, denn Sie können sich bestimmt vorstellen, dass die Page auch Alternativen für Leute ohne Luxusbrowser zu bieten hat.
Herkunft des Treeview
Auf die Gefahr hin, dass Sie mich nun als Plagiator bezeichnen: Der Tree stammt nicht vom mir... (die Tatsache, dass ich dies
offen zugebe sollte mich aber von der Schande, ein Plagiator zu sein, erlösen). Er wurde geschrieben vom Macher
der besten, deutschsprachigen JavaScript-Seite (javascript.seite.net). Gefunden habe ich das Tool aber in der Zeitschrift
Internet Professionell (www.zdnet.de).
TechnikIch habe mich, Schande über mich, noch nicht allzu eingehend mit dem Treeview befasst (ausser mit zwei der 3 Quelldateien, die ich modifizieren musste, um die Bugs zu fixen). Das Ding, soviel kann ich sagen, läuft absolut objektorientiert: Der Aufbau des Baumes wird vollständig über verschachtelte Objekte gemanagt. Ein drittes, unsichtbares Frame wird dabei zur Speicherung von Daten verwendet. Der Baum selbst befindet sich in keiner Datei: Das Skript öffnet nach Aufruf ein neues Dokument im Frame:
doc.open('text/html', 'replace');
Nun wird der neu erstellte Inhalt beschrieben, mit der Konsequenz, dass Netscape auf ein View Sourcecode den
Quelltextes des gesamten Skripts rausrückt, was angesichts der Tatsache, dass ich nichts zu verbergen habe auch nicht
weiter schlimm ist.
Zum Abschluss noch ein Beispiel der Objektorientiertheit des Codes (ist für den Aufbau der ersten Ebene zuständig):
var menu = new Menu();
menu.addItem(new MenuItem("Home", "/pilif/index.html", "_top",""));
menu.addItem(new MenuItem("Newscast", 0, "", ""));
menu.addItem(new MenuItem("Applications", 0, "",""));
menu.addItem(new MenuItem("Delphi Samples", 0, "",""));
menu.addItem(new MenuItem("Services", 0, "",""));
menu.addItem(new MenuItem("Other Stuff", 0, "",""));
menu.addItem(new MenuItem("About this tree", "/pilif/index.html", "_top",""));
KompatibilitätWie gesagt: Die Page läuft auf jedem Browser; auch ohne jedes JavaScript. Wie das möglich ist, das zeige ich hier.
1. IndexAuf der allerersten Seite wird die Weiche gestellt:
<script language="JavaScript">
<!--
if(navigator.appVersion.substring(0,1) >= '4')
if(navigator.appCodeName == "Mozilla")
window.location.href = '/pilif/frametools/bestbrowser.html';
//-->
</script/>
Browser, die JavaScript unterstützen, sich Mozilla nennen und eine Versionsnummer von 4 und mehr haben, werden
auf eine neue Page umgeleitet. Hier wird dann das neue Frameset definiert (siehe unten).Andere Browser bekommen hier ein Frameset verpasst, wobei auch alte Browser per noframes nicht zu kurz kommen:
<frameset cols="181,*" frameborder="0" framespacing="0" border="0">
<frame name="xcfg65j" src="frametools/navbar.html" scrolling="Auto" noresize>
<frame name="asdf45k" src="frametools/welcome.html" scrolling="Auto" noresize>
</frameset>
<noframes>
<BODY background="/pilif/pics/hiterg.jpg" bgcolor="#FFFFFF" link="#0000FF" vlink="#008000">
...
Für Informationen über die Frames und wieso die so komische Namen
haben, lesen Sie bitte das Whitepaper über
die Frames.
2. bestbrwoser.htmlSo furchtbar viel tut sich hier nicht:
<frameset cols="150,*" frameborder="0" framespacing="0" border="0">
<frameset rows="0,*" border=0 frameborder="no" framespacing=0>
<frame name="idfh32o" src="/pilif/scripts/code.html" scrolling="No"
FRAMEBORDER="No" noresize>
<frame name="xcfg65j" src="/pilif/scripts/menu.html" noresize>
</frameset>
<frame name="asdf45k" src="welcome.html" noresize>
</frameset>
Ausser dass hier kein <noframes> verwendet wird (die neuen Browser unterstützen dies gnaz sicher),
wird nicht viel neues gemacht. Die Unterscheide zu Index.html auf den Punkt gebracht:
Dies war's dann auch schon mit der ganzen Umstellung. Der Rest läuft im Inndern des Baumes ab, den ich, wie gesagt, noch nicht genau analysiert habe.
©1999 by Pilif |
|