Gunnar Bittersmann: Objekt existiert erst nach alert ?

Beitrag lesen

@@molily:

nuqneH

Und dies nur für IE.
Du preist diese Lösung als besonders vorteilhaft an, dabei ist sie eine der schlechteren.

Hm, aber besser als value und color mit JavaScript hin- und herzuschalten ist sie doch, oder?

Auf placeholder aus HTML5 wurde in den StudiVZ-Blog-Kommentaren ja schon hingewiesen

Yep, war mir neu. Allerdings tut die Kombination von @autofocus und @placeholder nicht das Gewünschte, die Beschriftung sollte ja trotz Focus sichtbar sein.

»Bei dieser Lösung sind Präsentationsschicht (CSS) und Verhaltensschicht (JavaScript) sauber voneinander getrennt.«
Soweit ich das sehe, ist das gerade nicht der Fall.

Hm …

Wenn JS deaktiviert ist, dann sind die Labels komplett unsichtbar.

Ja, die Beschriftung ist ein zusätzliches Gimmick, das nur mit JavaScript zur Verfügung steht. Oops, sehe ich hier eine Ungereimtheit zu „die Beschriftung sollte ja [beim Autofocus] trotz Focus sichtbar sein“? Ja, sehe ich. Entweder die Beschriftung ist zusätzlich oder essentiell.

Alledings geht auf den VZ-Plattformen (wofür ich die Lösung entwickelt hatte) ohne JavaScript sowieso kaum was.

Wie sollte man die Beschriftung ohne JavaScript realisieren? Innerhalb der Eingabefelder belassen? Etwas heller, damit sie die Eingabe nicht stört. Ich bin sicher, sie stört trotzdem.

Mit der CSS-Pseudoklasse :focus ausblenden? Dazu müsste im Markup erst das Eingabefeld, dann dessen Beschriftung stehen. Dann müsste das Eingabefeld aus dem Fluss genommen werden, was wieder ganz andere Probleme bereitet.

Oder die Beschriftung ohne JavaScript außerhalb der Eingabefelder plazieren? Dann passt das Layout u.U. hinten und vorne nicht mehr.

Wenn JS aktiviert ist, dann sind sie für viele Screenreader unsichtbar

Die VZ-Plattformen (wofür ich die Lösung entwickelt hatte), sind in puncto Barrierefreiheit sowieso verbesserungswürdig.

Außerdem ist die Präsentation feste ins JS gecodet: Da wird ja direkt .style.display = inline/none gesetzt.

Ja, das bringt jQuery so mit sich. Aber wer schaut schon in eine Blackbox hinein? ;-) Ohne Framework würde ich nicht mit JavaScript CSS-Eigenschaften direkt ändern und 'foo.style.display = "none";' schreiben, sondern wie du sagst:

Wirklich Trennung von CSS und Verhalten wäre, wenn JS nur eine Klasse setzt, um die Änderung des Status widerzuspiegeln. Erst damit greift die nötige, ins CSS ausgelagerte Umformatierung und die Labels werden versteckt bzw. über die Felder gelegt.

Ja, das predige ich hier auch hin und wieder.

Aber wen jQuery nunmal Methoden hide() und show() bietet, sollte man diese ignorieren mit dem Hintergrundwissen, dass intern foo.style.display gesetzt wird? Oder doch das Framework als Blackbox ansehen und die Methoden, die es nach außen bereitstellt, auch nutzen?

So könnte man auch ein barrierefreies Verstecken umsetzen (z.B. Off-Left-Methode). […] Zudem setzt das Script globale Variablen, da wäre ein anonymer Funktionswrapper (function () { ... })(); sinnvoll.

Ist für eine zukünftige Überarbeitung des Artikels gespeichert. Danke für deine Anmerkungen.

Qapla'

--
Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
(Mark Twain)