Unobtrusive JavaScript
# Unobtrusive JavaScript

Unobtrusive JavaScript (wörtl. unaufdringliches JavaScript, auch: barrierefreies JavaScript) ist eine bestimmten Prinzipien verpflichtete Form, wie JavaScript in Webseiten eingesetzt wird. Eine einheitliche Definition des Begriffs gibt es nicht und es handelt sich insbesondere nicht um eine offizielle Norm.

JavaScript soll demnach nicht Voraussetzung für die Funktionen einer Webseite sein, sondern den Funktionsumfang nur erweitern. Die Ansätze des unobtrusive JavaScript spielen vor allem für barrierefreies und mobiles Internet eine Rolle.

## Grundprinzipien

* Abgrenzung von Inhalt, Präsentation und Verhalten von Webseiten (Model View Controller)
* Verwendung von Best Practices, um Probleme herkömmlicher JavaScript-Programmierung zu vermeiden
* JavaScript als Erweiterung des Funktionsumfangs, nicht als Voraussetzung

## Motivation

Historisch hatte JavaScript den Ruf einer plumpen, ungeschliffenen Programmiersprache, die für „ernsthafte“ Softwareentwicklung unbrauchbar sei. Dies ist hauptsächlich auf inkonsistente Implementierungen der Skriptumgebung und des DOM in unterschiedlichen Browsern, sowie die weitläufige Verwendung von Copy-&-Paste bei der Programmentwicklung zurückzuführen. Laufzeitfehler waren dermaßen üblich und schwer auszubessern, dass viele Programmierer auf Verbesserungen verzichteten, solange das Skript ungefähr das gewünschte Verhalten aufwies. In manchen Browsern war ein solches Skript gänzlich nicht lauffähig.

Das Aufkommen von standardkompatiblen Browsern, JavaScript-Bibliotheken und besseren Debugging-Werkzeugen machte organisierten und skalierbaren JavaScript-Code möglich und Ajax-basierte Benutzeroberflächen machten dies sogar notwendig.

Wo JavaScript früher nur für kleine, unkritische Aufgaben eingesetzt wurde, ist es nun Praxis, auch große, komplizierte Projekte zu realisieren, die oftmals Teil der Kernfunktionalität einer Webseite darstellen. Laufzeitfehler sind damit keine Unschönheiten, sondern (unter Umständen fatale) Ausfälle.

Das Konzept der Barrierefreiheit im Sinne von JavaScript-Programmierung ist von dem Artikel Unobtrusive DHTML, and the power of unordered lists von Stuart Langridge geprägt. In diesem Artikel erörtert Langridge das Konzept, JavaScript strikt von HTML zu trennen. Seitdem hat er dieses Konzept in diversen Artikeln und einem Buch ausführlich dargestellt.

