layer und standards?
suicide
- browser
0 Kai Lahmann0 Joachim
Hi
Ich weiß, dass layer bei den verschiedenen Browsern leider unerschiedliche syntaxe haben.
1.
Gibt es auch layer-befehle die gleich sind?
2.
Wo gibt es eine Doku zu den Layern?
3.
Gibt es vieleicht eine function (vielleicht auch von irgendwem geschrieben) die den layer-befehl, so lange sie ihn erkennt, für den browser so umschreibt, dass er ihn erkennt *g* . z.B. anstatt "show" dann "visible" einsetzt. (in php wenns geht)
Bringt mich grade auf die Idee dass ich das ja auch selber machen könnte... aber wenn jemand sowas schon mal gemacht hat, übernehm ich das auch gerne :) , so ist es ja nicht.
vielen Dank
suicide
hi
wie du in SelfHTML lesen kannst, verhält sich hierbei nur Netscape anders als die sonstigen aktuellen Browser und das auch nur solange man die Layer in irgendeiner Form verändern will. Dazu ist bekanntlich JavaScript nötig, weiches eine Syntax if(irgendwas){} kennt. Damit kann man erkennen um welchen Browser es sich haldelt. Geht dann so:
if(document.getElementById){ // DOM-fähiger Browser (IE5, IE6, Mozilla, konq, Opera, NN6)
document.getElementById("ID").style.visibility = "visible";
}
if(document.layers){ // Netscape 4 und wirklich NUR der!
document.ID.visible = "show";
}
if(document.all){ // IE4, falls man ihn noch findet
document.ID.visibility = "visible";
}
dieses Ding geht übrigens auch nicht bei gefakten Browserkennungen daneben, da zum einen alle Browser, die faken können eh im ersten Ast landen, zum anderen wird meistens nur eine Kennung gefakt, aber keine Funktionsabfragen.
gruss Kai
hi,
Ich weiß, dass layer bei den verschiedenen Browsern leider unerschiedliche syntaxe haben.
layer gibt es nur im nc4x. _Positionierte_ Div z. B. kannst Du crossbrowser verwenden, da sie auch im nc4x zum Layer-objekt werden.
Gibt es auch layer-befehle die gleich sind?
Man spricht vom Methoden, die koennen durchaus gleich sein. Die CSS-Eigenschaft "visibility" kannst Du in z. B. im nc4x, im Mozilla und Opera, und auch im IE mit "visibility = 'visible'" veraendern (ja, nc4x versteht auch visibility, angeblich solls nur irgendeine Ur-Version geben, die es nicht kann.)
Unterschiede gibt es vor allem in der Objektreferenz.
Wo gibt es eine Doku zu den Layern?
Schon mal hier gestoebert? Ansonsten: Dokumentation zum DOM Level 2 und ECMA Script beim W3C, Javascript Doku bei Netscape und JScript Doku bei Microduft. Empfehlenswert auch die faq der JS-Newsgroup www.dcljs.de.
Gibt es vieleicht eine function (vielleicht auch von irgendwem geschrieben) die den layer-befehl, so lange sie ihn erkennt, für den browser so umschreibt, dass er ihn erkennt *g* . z.B. anstatt "show" dann "visible" einsetzt. (in php wenns geht)
Nein, PHP findet auf dem Server statt. Natuerlich kannst Du anhand des User-Agenten den Browser identifizieren und nur den spezifischen Code ausgeben, besser ist aber eine JS-Funktion die die Referenz "automatisiert":
// some known objects
var nc = !!(document.captureEvents && !document.getElementById);
var ie4 = !!(document.all && !document.documentElement);
// einfache div-layer referenzieren
function dRef(num) {return (nc? document.layers[num] : (ie4? document.all[num] : document.getElementById(num)))}
function dRefS(num) {return (nc? document.layers[num] : (ie4? document.all[num].style : document.getElementById(num).style))}
Erstere liefert die reine Referenz, letztere haengt noch style an (benoetigt fuer den Zugriff auf CSS-Eigenschaften). Die "known objects" besorgen eine Browser-Identifizierung anhand bekannter Objekte.
Die CSS-Eigenschaft "visibility" veraenderst Du nun so:
dRefS("DEINE_DIV_ID").visibility = "visible";
suicide
so schlimm ist es auch wieder nicht ;-)
Gruesse Joachim