AAAAAAHHHH! Netscape und Layers ?

Liebes Forum !

Ich habe zwar eine wichtige Frage, möchte doch zunächst etwas vorausschicken:
HTML wurde entwickelt, um eine einheitliche Programmiersprache zu erhalten, die plattformunabhängig funktionieren soll.
Nun gut, es kommt jetzt wieder darauf an, wie jeder einzelne von euch den Begriff ‚funktionieren‘ definiert.
Ich merke es jetzt aber, wie wenig dies hinhaut. Ich will einfach nur einen Navigationsbar mit Menü (realisiert durch Layers) ähnlich wie auf microsoft.com erstellen. Schaut soweit auch ganz gut aus (auf dem IE) aber auf dem Netscape - absolute Hölle. Ich könnte nun zwei Versionen (für NS und IE) des ganzen Projektes realisieren (Broswerdetection ist ja heutzutage selbstverständlich), doch ist mir dies einfach zu umständlich, wenn ich die Seiteninhalte realisieren will (ohne Redaktionssystem php3 usw). Ich will also einfach nur das ganze so realisieren, dass es sowohl auf Netscape als auch auf dem IE gut läuft. Mit welchem tag (div, span, layer usw) muss ich die Layers deklarieren, damit es auch auf dem NS gut läuft ?
Momentan arbeite ich mit Dreamweaver3, kann mir Dreamweaver4 Ultradev da weiterhelfen ? danke !

Layers ??
Hallo Cristoph,

ich finde leider den Beitrag von Vir2allender nicht auf Anhieb, aber er hatte eine gute Lösung die auch den NS6 mit einbezog, und gerade da entstehen die Probleme zur Zeit. Mit der Abfrage des Layer hat man bisher den NS bis 4.7 festgestellt. NS6 kennt keinen Layer-Befehl mehr (Anpassing an IE). Ich selbst bin auch noch nicht besonders fit auf dem Gebiet. Seine Angaben lauteten etwa so:

NS 4.x :
window.document.layer[„LayerName“].moveTo(10,10);

IE 4.x :
window.document.all[„LayerID“].style.pixelLeft = 10;
window.document.all[„LayerID“].style.pixelTop = 10;

IE5.x :
window.document.getElementById(„LayerID“).style.pixelLeft = 10;
window.document.getElementById(„LayerID“).style.pixelTop = 10;

NS6 :
window.document.getElementById(„LayerID“).style.left = 10+„px“;
window.document.getElementById(„LayerID“).style.top = 10+„px“;

Wilhelm

Ja, danke nochmal !
Im Codeschreiben bin ich nicht so fit, naja, ehrlichgesagt bin ich dazu doch zu faul. Aber trotzdem nervig, dass es in der Interpretation von HTML so krasse Unterschiede gibt. Ich hab mal in den Logs nachgeschaut. Derzeit verwenden ca. 13% aller Besucher der Seite Netscape 4.x. Ich wusste ja, dass es geringe Unterschiede in der Darstellung der Seiten geben kann. Bei mir jedoch hat sich Netscape sogar aufgehängt, wenn ich die Seite geöffnet habe.
Vielleicht hat ja noch jemand 'ne Lösung.
Danke trotzdem!
mfg

Hallo,

in der Regel solltest Du div-Tags fuer Netscape und MSIE verwenden und zwar im Style-Abschnitt ungefaehr so:

#IDLayer
{
position:absolute;
left:10px;
top:10px;
width:100px; // fuer MSIE
height:50px; // fuer MSIE
clip:rect(0px 100px 50px 0px); // fuer NS
z-index:1;
visibility:hide|show; // fuer NS
visibility:hidden|visible; // fuer MSIE
background-color:green; // fuer MSIE
layer-background-color:green; // fuer NS
}

Innerhalb des body’s steht dann sowas in etwa:

Hauptmenue

Wenn obige Division bei Untermenue aufklappen soll, z.B. ueber onMouseover|out oder onClick, so geht dass nicht im NS. Dann muss man ziemlich aufwendig ueber und einen Wrapper um die div legen. Da ist es besser in die div ein a-tag reinzulegen, denn in dem funktionieren auch die obigen Events im NS. Divisons oder Layers werden genauso absolute positioniert wie die Eintraege des Haupmenues.

Untermenue

Die Sichtbarkeit wird dann wie folgt gesteuert:

NS4.x:

window.document.layers[„IDSub“].visibility=„hide|show“;

MSIE4.x:

window.document.all[„IDSub“].style.visibility=„hidden|visible“;

MSIE5.x / NS6:

window.document.getElementById(„IDSub“).style.visibility=„hidden|visible“;

Abfragen auf den Browser tutst du am einfachsten wie folgt:

NS4.x:

if (window.document.layers) { … }

MSIE4.x:

if (window.document.all) { … }

Beim Rest:

if (window.document.documentElement) { … }

Eine andere Moeglichkeit gibt es meines Erachtens nicht, denn die Browser verwenden unterschiedliche DOM-Modelle und Philosophien.
Ausserdem solltes es jedem mal endlich bewusst werden, dass vom W3C-Konsortium nur Standards bzgl. Cross-Javascript festgelegt werden aber nicht Core-JavaScript-Methoden. Ein grosser Unterschied. Bei Core-Javascript kann jeder Browser-Hersteller das machen wie er gerade lustig ist!

Wenn Du einen Layer dynamsich mit HTML-String belegen willst, dann muss folgendes unterschieden werden:

NS4.x:

with (window.document.layer[„IDSub“].document) {
open(„text/html“,„replace“);
write(strContent);
close();
}

MSIE4.x:

window.document.all[„IDSub“].innerHTML = strContent;

Beim Rest:

window.document.getElementById(„IDSub“).innerHTML = strContent;

innerHTML ist eigentlich nach W3C propritaer, aber trotzdem vom NS6/Morzilla uebernommen worden um die Anpassung von Skripts bzgl. dem MSIE besser handhabbar zu gestalten. Willst Du aber nach W3C gehen, dann stell Dich schon mal auf maechtige Kopfschmerzen ein, denn die Zeiten des „leichten“ Scriptings gehen langsam aber sicher zu ende. Dann musst Du es naemlich ueber createElement(), setAttribute(), appendChild() usw. machen. Dann beginnt endlich die Zeit der „richtigen“ Programmierer fuers Web :smile:

CU

Maaamaaa !!
Vielen Dank erstmal für deine Mühe !
Ich hab auch schon einiges mit manueller Bearbeitung erstellt, doch ich bin da auch nicht so heftig drauf :wink: und werde das ganze wohl anders lösen müssen. Vielleicht findet sich ja im Netz irgendwo ein einigermassen konfigurierbares Javsscript. hmmm.
Schon komisch: da kommt ein neuer Browser daher (NS6) und diktiert uns einfach so, wie wir unsere Seiten zu schreiben haben. Wie gesagt: HTML wurde ja anfangs erfunden, um eine Plattform-(Sun, IBM usw)unabhängige Programmiersprache zu haben. Bei PDF zum Beispiel hats doch auch ganz gut geklappt. Wieso dann nicht auch bei HTML? Und wieso macht nur immer Netscape Probleme ?
Ich habe heute mit Netscape telefoniert (0190er Nummer für Deutschland) und die hatten keine Ahnung von Tuten und Blasen.
Danach hab ich den Kundenservice von Macromedia angerufen (ich arbeite mit Dreamweaver3). Die Frau hat gesagt: „Dreamweaver spuckt reinen HTML-Code aus, wenn damit irgendein Browser nicht zurechtkommt, dann ist das nicht unser Problem“ f#ck! ups, tschuldigung.
danke wie gesagt und ein schönes Wochenende !
mfg