molily: position:fixed-fähige Browser erkennen

Beitrag lesen

Hallo, Thomas,

Spontan faellt mir der Vergleich von object.style.top mit object.offsetHeight oder object.style.left mit object.offsetLeft ein:

Es um Bereiche geht, welche sich am obersten Bildrand befinden, das heißt, sie befindet sich in jedem Fall bei top:0 und left:0 beziehungsweise right:0, unabhängig davon, ob position:absolute oder position:fixed.
Wenn ich richtig schlussfolgere, dürften dadurch auch in einem Browser, welcher position:fixed nicht kann, offset(Top|Left) und style.(top|left) gleich sein, da dieser position:absolute anzeigen sollte (siehe Selektorkonstrukt).

<div style="position: fixed; top: 100px; left: 50px; width: 150px; height: 80px; color: #00C; background-color: #FFC" onclick="if(parseInt(this.style.top)==this.offsetTop)alert('position: fixed funktioniert.');else alert('position: fixed funktioniert nicht.')">[Klick mich!]</div>

Opera und Mozilla sagen ok, der IE(6) meint nein.

Das Komische beziehungsweise mir bisher Unbekannte ist, dass sich objekt.style.top nur abfragen lässt, wenn es im style-Attribut vergeben wurde. Wenn es im vom Markup getrennten Styles festgelegt wird, ist die Objekteigenschaft leer.
Es ist jedoch unbedingt nötig ist, dass die Styles in einem dokumentweiten Stylesheet festgelegt werden, da wie Orlando sagte den Kindselektor verwenden muss, um position:fixed vor dem Internet Explorer zu verstecken.

Das allerkurioseste ist, dass Opera 6.05 den Wert liefert...

Stylesheet          Wert von objekt.style.top
Opera 6.05           Inline              vorhanden
Opera 6.05           global              vorhanden
Opera 7 beta 1b      Inline              vorhanden
Opera 7 beta 1b      global              nicht vorhanden
Mozilla 1.2 final    Inline              vorhanden
Mozilla 1.2 final    global              nicht vorhanden
MSIE 6.0 SP1*        Inline              vorhanden
MSIE 6.0 SP1*        global              nicht vorhanden

* Plus ein paar Zerquetschte[tm] (Sicherheitsupdates), welche nicht ins Gewicht fallen dürften.

Eine Testseite gibt es unter http://home.t-online.de/home/dj5nu/fanhost/css-fixed.html...

Alles in allem hilft mir das wenig weiter - vielleicht hast du noch eine ähnliche Idee. Trotzdem vielen Dank.

Kann mir jemand erklären, wie der standardisierte Weg ist, den "computed value" des Abstands zum Fensteroberrand zu bestimmen? offset* ist anscheinend Microsoft-Syntax, wird aber breit unterstützt, und die genannte DOM-Variante unterstützt kein Browser. (Meine Informationen beruhen nur auf Selfhtml, ich habe mich nie umfassend in DHTML eingearbeitet...) Wieso lässt sich über objekt.style.position nicht der momentane Wert bestimmen, ist das beabsichtigt? Ich frage mich, wieso Opera 7 die Abfrage bei globalen Stylesheets im Gegensatz zu Inline-Styles neuerdings unterbindet, erfordert das der Standard?

Grüße,
Mathias

--
Remember: KING KONG Died For Your Sins!
"ich belle ich fauche ich keife ich röchle ich knurre ich schreie ich wimmer ich bibber ich zitter ich ICH!"
Naïve Nonsens-Poesïe http://home.t-online.de/home/dj5nu/lit-nonsens.html