Ich bin ein großer Freund von HTML5. Allerdings kann ich nicht nachvollziehen, in welcher Form einige – bereits heute – HTML5 nutzen wollen bzw. zu nutzen empfehlen. Die tollen HTML5-Elemente (nav, aside, header, footer..), die wir mit dreckigen Tricks nutzen könnten, bringen nichts. Kein Browser, kein Screenreader und auch keine ernstzunehmende Suchmaschine unterstützen die Semantik der neuen Tags, gleichzeitig bereiten Sie in allen Versionen des Internet Explorer sowie im Firefox 2 erhebliche Probleme und machen einiges kaputt.
Auf der anderen Seite gibt es die schönen WAI-Aria-Landmarks. Sie sind für eine zusätzliche Semantik definitiv der bessere Weg, weil sie im Gegensatz zu den oben genannten HTML 5 Element einfach funktionieren, helfen und nichts kaputt machen.
Andere Elemente wie figure und legend können teilweise durch aria-labelledby/aria-describedby substituiert werden.
Dies ist kein Widerspruch zu HTML 5. Im Gegenteil der HTML 5 Validator validiert inzwischen nicht nur Teile von Wai-Aria, sondern eben auch die Aria-Landmarks.
Neben den problemlos verwendbaren Aria-Attributen, gibt es in HTML5 viele schöne neue Sachen zu entdecken.
- Man kann sich endlich den doctype merken.
- Das canvas-Element wird von allen modernen Browsern unterstützt und kann mit excanvas auch im Internet Explorer zum Laufen gebracht werden (allerdings mit deutlich geringerer Performance).
- Attribute wie autocomplete sind endlich Bestandteil von HTML 5. Ohne dieses Attribut sind mit Javascript erstellte Auto-Suggest-Listen für Eingabefelder unmöglich.
- Es gibt neue, befreiende Verschachtelungsregeln.
- Best practices wie beispielsweise document.documentElement.className += ‘js-on’; erzeugen endlich validen Code.
Vor allem jedoch bietet HTML 5 – insbesondere bei Formularelementen – semantische Extras, die Javascript-Entwickler, gleichgültig von der derzeitigen Unterstützung im Browser, dringend benötigen, um eleganten, unobtrusiven Code schreiben zu können.
Wie zusätzliche semantische HTML5-Attribute beim Aufbau von Javascript helfen
Man stelle sich vor, man möchte einen Slider mit numerischen Werten realisieren. Dieser Slider soll jeweils einen vom Backend vorgegeben Startwert, Mindestwert und Höchstwert kennen. Als Javascript-Fallback soll ein einfaches Texteingabefeld dienen.
Während HTML 4 sowie XHTML 1.0 lediglich ein Attribut für den Startwert bieten, hilft uns HTML 5 ebenso beim Mindest- und Höchstwert unseres unobtrusiv zu erstellenden Sliders.
<input type=“number“ value=“3“ min=“1“ max=“10“ /> <!-- oder in Schritten --> <input type=“number“ value=“3“ min=“1“ max=“10“ step="1" /> <!-- oder gleich als 'slider' --> <input type=“range“ value=“3“ min=“1“ max=“10“ />
HTML 5 und progressive enhacement
HTML 5 bietet einige interessante Features, welche bereits heute mit Hilfe von Javascript implementiert werden können.
Das oben beschriebene canvas-Element ist ein Beispiel hierfür, ein weiteres sind die zahlreichen Erweiterungen für Formularelemente, welche in Teilen bereits von Browsern implementiert wurden.
Die HTML 5 – Attribute liefern hierbei die semantische Grundlage für die Aktivierung und Konfiguierung des Javascripts.
Vor der Implementierung mit Javascript sollte man grundsätzlich testen, ob das Feature nicht bereits Teil des Browsers ist. Da die neuen HTML-Attribute in der Regel mit einem DOM-Interface korrelieren, ist dieser Test kinderleicht. Hier einige Beispiele mit jQuery:
(function($){
var form = $('<form><fieldset><textarea /></fieldset></form>');
$.extend($.support, {
//wird die Constrain Validation unterstützt?
checkValidity: !!(form[0].checkValidity),
// wird das maxlength-Attribut am textarea-Element unterstützt?
textareaMaxlength: !!( $('textarea', form)[0].maxLength !== undefined || $('textarea', form)[0].maxlength !== undefined)
});
})(jQuery);
Eine Beispielimplementierung für das placeholder-Attribut
Das placeholder-Attribut bietet ein Formularfeature, welches Frontend-Entwickler tagtäglich bereits heute mit Javascript in Webseiten nutzen; nämlich das Entfernen von vorbelegten Werten in Eingabefeldern. Hierbei ist das Standardverhalten wie folgt definiert: Der Placeholder stellt einen kurzen Hinweistext dar, welcher dem User als vorläufiger Wert im Eingabefeld angezeigt wird, solange das Feld keinen Wert hat und nicht fokusiert ist. Das placeholder-Attribut ist kein Ersatz für ein assoziertes label-Element!
<label for="birthday">Ihr Geburtstag</label> <input type="text" placeholder="TT.MM.JJJJ" name="birthday" id="birthday" />
In HTML4/XHTML 1 ist die Unterscheidung ob das Eingabefeld einen Wert, welcher sich wie ein Placeholder verhalten soll oder nicht, nicht gelöst. Die derzeit eleganteste Javascript-Technik verwendet hierzu einen Vergleich zwischen der value- und der defaultValue-Eigenschaft. Diese Form der Implementierung kommt jedoch an Ihre Grenzen, wenn der User beispielsweise ein Suchformular absendet und der Suchbegriff aus Usability-Gründen wiederholt wird, um es dem User zu gestatten, ohne Neueingabe den Suchbegriff zu erweitern, verkürzen oder sonst wie zu modifizieren. Da in diesem Beispiel ausnahmsweise der defaultValue nicht die Aufgabe eines Placeholders besitzt, fehlt dem Javascript die entscheidende Information sich korrekt zu verhalten. Dieses Problem kann letztlich nur durch Hinzufügen dieser Extrainformation gelöst werden. Und die Standardisierung dieser Extrainformation stellt gerade eben das placeholder-Attribut dar.
Wie könnte nun eine placeholder-Implementierung aussehen?
Als erstes erweitern wir unseren oben genannten HTML5-Implementierungstest:
var form = $('<form><fieldset><input type=“text“ /><textarea /></fieldset></form>');
$.extend($.support, {
checkValidity: !!(form[0].checkValidity),
textareaMaxlength: !!( $('textarea', form)[0].maxLength !== undefined || $('textarea', form)[0].maxlength !== undefined),
placeHolder: !!($('input', form)[0].placeholder !== undefined || $('input', form)[0].placeHolder !== undefined)
});
Wird das placeholder-Attribut nicht unterstützt, kann mit der Implementierung durch Javascript fortgefahren werden, was wie folgt aussehen könnte.
if(!$.support.placeHolder){
function resetInput(){
if(this.value == this.getAttribute('placeholder')){
this.value = '';
}
}
function fillInput(){
if(!this.value){
this.value = this.getAttribute('placeholder');
}
}
$(function(){
$('input[placeholder]')
.each(function(){
var placeHolder = this.getAttribute('placeholder').replace(/\n|\r|\f|\t/g, '');
this.setAttribute('placeholder', placeHolder);
if(!this.value){
this.value = placeHolder;
}
})
.bind('blur', fillInput)
.bind('focus', resetInput)
;
});
}
Das schöne, das Script kann bereits heute für ein besseres placeholder/input-rest-Script eingesetzt werden. (Ich kenne keines mit einem besseren Verhalten). Bei Browsern (zum Beispiel Safari 4), welche dieses Attribut bereits unterstützen, funktioniert das ganze dann auch ohne Javascript. Die Benutzung ist sehr einfach. Konfiguration und Start des Scripts geschehen komplett automatisch.
<label for="birthday">Ihr Geburtstag</label> <input type="text" id="birthday" placeholder="TT.MM.JJJJ" name="birthday" />
Hier das gesamte Script (Eine verbesserte Variante des Placeholder-Scripts):
(function($){
var form = $('<form><fieldset><input type=“text“ /><textarea /></fieldset></form>');
$.extend($.support, {
checkValidity: !!(form[0].checkValidity),
textareaMaxlength: !!( $('textarea', form)[0].maxLength !== undefined || $('textarea', form)[0].maxlength !== undefined),
placeHolder: !!($('input', form)[0].placeholder !== undefined || $('input', form)[0].placeHolder !== undefined)
});
if(!$.support.placeHolder){
$(function(){
$('input[placeholder]')
.each(function(){
var placeHolder = this.getAttribute('placeholder').replace(/\n|\r|\f|\t/g, '');
this.setAttribute('placeholder', placeHolder);
if(!this.value){
this.value = placeHolder;
}
})
.bind('blur', function fillInput(){
if(!this.value){
this.value = this.getAttribute('placeholder');
}
})
.bind('focus', function resetInput(){
if(this.value == this.getAttribute('placeholder')){
this.value = '';
}
})
;
});
}
})(jQuery);
Fazit
HTML 5 hat deutlich mehr zu bieten als nicht funktionierende HTML-Elemente. Diese sind oftmals nicht mehr als semantischer „Zuckerguß“. HTML 5 kann jetzt schon vielmehr: Es ermöglicht wirklich elegantes und unobtrusives Javascript.
[...] welche die Nutzung von HTML5 in seiner reinen Form bereits heute propagieren. Die Probleme der Rückwärtskompatibilität mit HTML5-Elementen sind zu groß und können eben nicht mit dem document…. Ausnahmen bestätigen jedoch die Regel und eine hiervon sind mit Sicherheit die HTML5 [...]
Pingback by protofunc() » HTML 5 Mediaelemente für alle – Warum und Wie video-/audio- Elemente schon heute genutzt werden sollten — April 19, 2010 @ 10:26 pm
[...] progressive enhancement” und vor allen Dingen einigen Kommentaren habe ich mein eigenes HTML5 Placeholder-Script nochmals [...]
Pingback by protofunc() » HTML5 placeholder Attribut und Zugänglichkeit — June 18, 2010 @ 8:48 am
Hallo Alexander,
super Artikel, Script klappt tadellos.
Im Einsatz u.a. auf:
http://www.gold-gold-gold.de/kontakt
Link zu Deinem Artikel im Footer gesetzt.
Gruß
Werner
Comment by Werner — August 15, 2010 @ 11:22 am
double penetratrations free trailers
hershey park amusement
fotos de mujeres ensenando todo
www damacai com
pappadeaux bisque recipe
serious sam hd walk thru
free blank 64 team bracket
alba galindo senadoras
images of uncircumsized
d cut jeans buy
micro braids baltimore md
lidos night club
fotos escotes voyeur descuidos bragas upskirts tangas
m6 scout for sale
courtney thorne smith butt naked
canal 62 los angeles
bankofamericasignin banking bankofamericahome
thompson center venture centerfire
rheem imperial 80 plus furnace
red nose tiger stripe pitbulls
Comment by Neo — January 8, 2011 @ 7:37 am
coco austin
jasmine byrne ferrara video stream
gun caliber comparisons
ann margaret topless
www alaskapermanent fund com
536905802 manual
winchester serial number lookup
mediacom webmail login mchsi
lil wayne unreleased underground music
lisa raye and da brat biography
49 chevy truck id plate picture
hindi maa ki chudai story
5 cc equals ml
pic tractor flatbeds
aj wright clothing department
stella stevens nude
biography zonnique pullins
graco interchangeable system for babies
palomar 250 amp
letras para leer a una quincea era
Comment by Neo — January 8, 2011 @ 8:10 am
wachovia account login online services
copy of 2010 w9
ladies going braless
tjoobs videos
ballisticchart for 223
menu and prices of tgif
gangster disciple nation laws and lit
free sexy legs upskirt kelly cass videos
interarms firearms alexandria virginia
classic americans ball gowns
kendall meditrace 530
feed troughs for deer
convert mg kg to m3
mechquest trainer download spook
netzero message center
market basket supermarket ma
sepupu ku gersang
parisian department store
fram 3593 oil filter
clog altery symptoms
Comment by Halo — January 8, 2011 @ 8:42 am
large lump on the shin bone
simple 1900s apron patterns
jr high schoolgirls porn
mustang flame paint jobs
westside blood piru damu rules knowledge
summary of salvation by langston hughes
sony imax nyc new york city
16 oem steel wheel hhr
sexsocon 5 mujeres
tonsilith pictures
philippines sex video clips
water gram liter
bb tbanking
scary popouts
wooden smokehouses for sale
modified bob with graduated layers
pinkerton epayroll
nursing diagnosis astham nanda
remington 25 06 ballistics
used 4 wheelers for sale louisiana
Comment by Aron — January 8, 2011 @ 8:44 am
gun bluing chemicals
k98 sling installation
delishis booty
police survalence cameras
fie e15 pistol
dr dean edell view of vitamins
holley 9510 4653
f2atv forums coolsat
gangsta disciples handshake
da 30 point buck song lyrics
the american pageant fourteenth edition kennedy review
18 sal dokhtar
grandes cucas travestis
parejas liberales en texas
reverse arrow bob hairstyle
david harold blackwell mathematician
best buy ego support
provident bank of redlands cd rates
crystal bottom southern belle
silver the hedgehog sprites
Comment by Arnie — January 8, 2011 @ 8:52 am
www securitas epay com information
centigrade equals ferinheight
gaby espino porn
2 0l zetec timing marks
www camouflagelayouts com
los mejores culos grandes
pictures of naked mythical gods
hy hunter derringer
simplify cos2 arccotx
aleida n ez nude
84s swangers
discounted nautical clocks
viscount organ repair indiana
bright red blood between periods
bank of america netbenefits
45 lc 410 over under combo guns
parking near 151 w randolph
pictures of car accidents victims
spotted dicke pudding
1996oldsmobile achieva
Comment by Hero — January 8, 2011 @ 9:05 am
1990 chevy astro van vaccum hose routing
how many oz in lb
avatar tylee naked
listen to nephew tommys pranks mother
battle royale ralph ellison
chica mexicanas calienteswww com
bon ton department store
folk gd prayer
powerpoint nonliving factors
mccolly realty demotte indiana
cogelonas de 40
elegy examples poem
rohm 25 auto pistol
left eye open casket funeral pictures
pearl ls island
printable venn diagram circles
fishtail braids designs in northern va
bahan ka dhoodh
toccara jones half naked
melissa peterson reba weight loss
Comment by Bill — January 9, 2011 @ 8:06 am
I liked this so I bookmarked http://www.protofunc.com/2009/08/16/meinung-zu-html5 at reddit.com so my co-workers can view it as well. I simply used protofunc() » Meinung zu HTML5: Semantik noch Flop, progressive enhancement Top as the link title in my post, as I figured it would be a good way to spread the word about this great post. Please email me back at Musslewhite285@gmail.com if there is anything else I can do to help.
Comment by Bethanie Sedanos — April 15, 2011 @ 2:43 am