Dropdownmenü auch für NN5 ohne Layer - was nun ?
Reiner
- javascript
0 Ulf Lieden0 Reiner
Ich möchte eine Navigation programmieren, die für den Benutzer eigentlich ähnlich wie die DropDown Menüs in MS-Office Anwendungen aussehen (=> in HTML:Tabellen mit Links). Und das Ganzesoll einfach, zukunftssicher und mit minimalem Aufwand zu realisieren sein (ich weiß: wer will sowas nicht!).
Nach meiner ersten Begeisterung für Layer kam die Ernüchterung, daß der NN5 voraussichtlich keine dynamischen Layerverfahren unterstützen wird ....
Ich habe unter http://www.teamone.de/selfhtml/tfbe.htm#a7 zwar einen anscheinenden Ersatz (div & span), der unter mit MS Explorer schlichtweg nicht läuft. Ich möchte browserspezifische Programmierung soweit irgendwie möglich vermeiden (geschweige Browser-Versionsabhängige Varianten) !
Wichtig in meinem konkreten Fall ist, daß die Dropdownmenüs beim Aufklappen über den zuvor gezeigten Inhalten draufliegen und wieder verschwinden, ohne daß die restlichen Fensterbereiche plötzlich nicht mehr gezeigt werden oder re-freshed werden müssen ("einfach" so, wie es z.B. auch der Netscape Navigator mit seinen eigenen Menüs zeigt, z.B. Buchmarken).
Und nun ??
Hi Reiner,
Ich möchte browserspezifische Programmierung soweit irgendwie möglich vermeiden (geschweige Browser-Versionsabhängige Varianten) !
Im Falle von DropDownMenüs wirst du an versionsabhängige Programmierung nicht vorbeikommen. Das Anzeigen und Verstecken von Menüs baut auf die CSS-Angabe "visibility = visible/hidden". Im NC ist der Syntax document.layers.layerName.visibility, in IE4 document.all.layerName.style.visibilty. Letztere funktioniert auch in IE5.
Ab NC5 soll der Zugriff auf einzelne Elemente nach dem Document Object Model (DOM) 1 erfolgen. Daß heißt, document.layers ist passe, in NC5 ist document.getElementById(layerName) gültiger Syntax. Dieser Syntax funktioniert schon in IE5, der nicht nur das IE4-Objekt document.all unterstützt, sondern auch DOM 1 (zumindest weitgehend).
Da der Zugriff auf Styles jedoch nicht in DOM 1 definiert wird, sondern erst in DOM 2 - das erst als Draft vorliegt - ist auch mit Unterschieden zwischen NC5 und IE5 zu rechnen. In den kommenden Jahren ein schönes Schlamassel also, wenn Browser ab der vierten Generation unterstützt werden sollen.
DropDowns, die in NC4, IE4 und IE5 funktionieren, gibt es reichlich im Netz, beispielsweise auf http://developer.netscape.com/viewsource/smith_menu2/menu.html
Gruß,
UlfL
Hallo Ulf,
fast Volltreffer (da hätte ich auch selbst draufkommen können, dort nachzuschauen !), aber dort steht auch etwas, das mein konkretes Problem nicht löst:
Ich arbeite mit Framesets, und da "heißt es:
HTML and CSS-P-based content cannot overlap across frameset borders -- just as images can't. See the "Menus in Frames" section in the article at the following URL:
http://developer.netscape.com/viewsource/smith_menu2/menu.html
Mist aber auch.
Noch eine Frage zu Deinem Kommentar:
Da der Zugriff auf Styles jedoch nicht in DOM 1 definiert wird, sondern erst in DOM 2 - das erst als Draft vorliegt - ist auch mit Unterschieden zwischen NC5 und IE5 zu rechnen. In den kommenden Jahren ein schönes Schlamassel also, wenn Browser ab der vierten Generation unterstützt werden sollen.
Interpretiere ich das richtig: selbst wenn ich eines der vor Dir genannten Beispiele verwenden würde, ist Inkompatibilität im Jahr X wahrscheinlich zu erwarten ???
!
Ansonsten: 1000 Dank !
Gruß Reiner
Hi Reiner,
auf der Seite http://developer.netscape.com/viewsource/smith_menu/smith_menu.html wird auch auf frames-übergreifenden DropDowns eingegangen, schau dir die Beispiele ganz unten an.
Noch eine Frage zu Deinem Kommentar:
Da der Zugriff auf Styles jedoch nicht in DOM 1 definiert wird, sondern erst in DOM 2 - das erst als Draft vorliegt - ist auch mit Unterschieden zwischen NC5 und IE5 zu rechnen. In den kommenden Jahren ein schönes Schlamassel also, wenn Browser ab der vierten Generation unterstützt werden sollen.
Interpretiere ich das richtig: selbst wenn ich eines der vor Dir genannten Beispiele verwenden würde, ist Inkompatibilität im Jahr X wahrscheinlich zu erwarten ???
Ja. Spätestens im NC5, der - voraussichtlich - weder document.layers noch document.all kennen wird.
Gruß,
UlfL