MudGuard: CSS-Funktionalität per Javascript abfragen

Beitrag lesen

Hi,

Wie aber frage ich im Javascript ab, ob der Browser eine bestimmte CSS-Funktionalität beherrscht?
Konkret geht es darum, ob der Browser :hover für nicht-Links unterstützt.

Ich denke mal, du willst mit JavaScript die :hover-Funktionalität nachbauen.

Nö, da soll was ganz anderes geschehen (nicht meine Idee, der Auftraggeber wünscht es so).
Denn wenn es so wäre, könnte ich per onmouseover/onmouseout einfach die Eigenschaften setzen/zurücksetzen, die per :hover im stylesheet gesetzt werden ...

Wahrscheinlich machst du es dir nur viel schwerer, wenn du zusätzlich zur :hover-Logik auch noch eine Browsererkennung programmierst. Du kannst erst dann wissen, ob :hover funktioniert, wenn der Hover eintritt. In dem Moment des Mouseovers kannst du mit JavaScript abfragen, ob die :hover-Regel angewendet wurde und sich die faktischen CSS-Eigenschaftswerte (currentSTyle, getComputedStyle) geändert haben.

Interessante Idee, das mit dem computedStyle. Aber das greift ja, wie Du sagst, erst, wenn der :hover- bzw. onmouseover-Fall bereits eingetreten ist.

Dann kannst du entscheiden, ob du per JavaScript manuell eine Klassenänderung o.ä. vornehmen musst. (Man könnte natürlich auch andere Indikatoren verwenden, etwa mit body:hover irgendeine irrelevante Eigenschaft setzen, deren Änderung man mit JavaScript abfragen kann.)

Auch bei body:hover tritt das Ereignis erst auf, wenn sich die Maus über dem Viewport befindet - was aber z.B. bei einem Aufruf der Seite aus einer Mail oder aus den Bookmarks usw. wesentlich später eintreffen kann als onload (Maus bleibt erstmal auf dem Mailprogramm/der Favoriten-Leiste) ...

Dann werd ich wohl doch dabei bleiben (müssen), die Browser zu erkennen statt ihrer Fähigkeiten.

Die Event-Handler musst du bei den relevanten Elementen (oder beim document-Objekt, wo alle Events vorbeikommen) sowieso registrieren. Warum also nicht alles mit JavaScript lösen, solange es solche Browser gibt? Oder du denkst dir wie beschrieben eine saubere Logik aus, die überprüft, ob die :hover-Styles bereits angewendet wurden und im negativen Falle noch einmal eingreift.

Wenn's da nur nach mir ginge ...

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.