Hallo,
Es heißt »unobtrusive«, nicht »unobstrusive«.
Aber die Schichten sind bei meinem Beispiel doch getrennt.
Habe ich ja nicht bestritten. Zu »Unobtrusive«, wie es von Peter-Paul Koch und Christian Heilmann geprägt wurde, gehört aber mehr dazu.
Das ganze soll auch so gestaltet sein, das es einer beliebigen Html-Seite einfach hinzugefügt werden kann, indem man nur das Javascript referenziert (die divs und spans in meinem Beispiel würde ich mit javascript erzeugen).
Dann gibt es ja gar kein HTML, sondern nur JavaScript, das HTML erzeugt. Daher ist es irgendwie müßig, über die Trennung von JavaScript und HTML nachzudenken. Du schreibst wahrscheinlich mit document.write() Code ins Dokument. Dann kannst du meiner Ansicht nach auch mit Inline-Event-Handlern arbeiten. Denn erst den HTML-Code einzufügen und dann nochmal im DOM herumfuhrwerken, um die Event-Handler zu registrieren, ist ein doppelter Aufwand.
Das ist doch unobstrusive...
Wie man es nimmt. Ohne JavaScript ist die Funktionalität komplett weg. Das ist das Gegenteil von dem, was mit »unaufdringlich« gemeint war. Komplexe JavaScript-/AJAX-Anwendungen fallen somit aus der Definition heraus.
Ich frage mich, ob das nicht ein bischen am Ziel vorbeigeschossen ist, vor allem, weil es mich Monate kosten würde, den User aber nur dreißig Sekunden, um Javascript einzuschalten.
Ob du überhaupt ein zugängliches/abwärtskompatibles Spiel anbieten willst, ist deine Entscheidung. Natürlich kannst du JavaScript voraussetzen. Wenn das Spiel sowieso per JavaScript in fremde Dokumente integrierbar sein soll, geht es wohl auch nicht anders.
... Zu deinem Code daher noch die Anmerkung: Event-Handler registrieren durch ein einfaches element.onevent = handlerfunktion;. Kein Attribut, schon gar nicht ein Attributknoten! ...
Was ist denn eigentlich der Vorteil bei der von Dir empfohlenen Schreibweise? Ist Sie schneller?
Vor allem funktioniert sie browserübergreifend.
Mathias