JavaScript: Einbindung, NoScript, Verweise (Links), Barrierefreiheit
Navigation überspringen

Tipps zu JavaScript

JavaScript erlaubt es, dass ein Dokument dynamisch auf seine Umgebung und den Benutzer reagiert. Dies kann sehr nützlich sein, hat aber auch seine Tücken.

Dies ist keine JavaScript Einführung. Erst recht keine Werbung für den Einsatz von JavaScript. Es ist Sammlung von Tipps, wie man JavaScript so einsetzen kann, dass es nicht behindert.

Auf dieser Seite:

– — – — – — – — –

Philosophie

JavaScript erweitert statische HTML-Dokumente um dynamische Möglichkeiten. Es können Berechnungen ausgeführt, das Dokument verändert und auf Benutzereingaben reagiert werden, ohne ein neues Dokument aus dem Netz zu laden.

JavaScript fügt dem Dokument nicht nur zusätzliche Möglichkeiten, sondern leider auch zusätzliche Komplexität, Probleme und Barrieren hinzu. Daneben gibt es auch eine beträchtliche Menge an zusätzlichen Möglichkeiten, die Besucher zu belästigen (z. B. sogenannte Popups).

JavaScript und insbesondere JScript beim Internet Explorer hat immer wieder zu beträchtlichen Sicherheitslücken geführt. Dies wird - zumindest bei JScript - auch so bleiben. Daher, und weil sie die ewigen Popups leid sind, haben viele Menschen JavaScript ausgeschaltet. Deshalb sollte JavaScript nur so eingesetzt werden, dass die Seiten auch bei abgeschaltetem JavaScript benutzbar sind!

Nicht zuletzt der kann aktuelle High-Tech-Kram wie PDAs und Handys mit JavaScript Probleme bereiten bzw. dieses evtl. gar nicht ausführen.

JavaScript ist aber nicht als solches böse. Es kann - richtig eingesetzt - durchaus nützlich sein. Falsch eingesetzt, und das kommt leider recht häufig vor, wird es allerdings schnell zur Plage. Daher sollte es mit Bedacht eingesetzt werden.

Es besteht also kein Grund, sinnvolle Verbesserungen mittels JavaScript nicht zu realisieren. Man kann z. B. Bildgrößen an die aktuelle Fenstergröße anpassen und sogar ggf. höher aufgelöste Bilder nachladen, wenn der Platz für diese da ist. Allerdings sollte die Seite auch ohne JavaScript bereits sinnvoll skalieren, denn sonst hilft die ganze Mühe in Zweifel nichts.

Nicht zuletzt ist es für viele Dinge sinnvoll, einen HTML-Rückfall zu haben. Hier ist dann häufig ein erneutes Laden der Seite bzw. einer neuen Seite nötig. Aber das ist deutlich besser, als wenn ein Knopf keine Funktion hat. Bei einem Einheiten-Rechner kann man die Umrechnung mit JavaScript machen, ohne dass eine neue Seite geladen werden muss. Ist JavaScript ausgeschaltet oder nicht vorhanden, dann kann eine neue Seite mit dem Ergebnis von Server geholt werden. So bietet JavaScript einen Vorteil, ohne dass es einen zusätzlichen Nachteil gibt.

– — – — – — – — –

JScript und die Sicherheit

JScript ist die JavaScript-Erweiterung des Microsoft Internet-Explorers. Diese bietet Web-Programmierern alle Möglichkeiten von Visual Basic auch im Netz an.

Selbstverständlich sind alle gefährlichen Befehle blockiert, wenn das Programm aus dem Internet stammt. Aber genau hier liegt das Problem und die Ursache für die immer wieder auftretenden Sicherheitslücken.

Es ist halt sehr gefährlich für Programme, die aus dem Internet kommen, eine Programmierumgebung zu nutzen, die tief ins Betriebssystem integriert ist. Da wird es immer Lücken geben.

Für Programme aus unsicheren Quellen sollte eigentlich eine Umgebung genutzt werden, die von vornherein nichts gefährliches tun kann. Eine unsichere Umgebung nachträglich abzusichern geht - wie die Erfahrung zeigt - schief. Der Internet Explorer ist auch nach Jahren nicht trustworthy.

Auch der IE 7 wird daran nicht allzuviel ändern: Wenn das Fundament nicht stimmt, hilft nachbessern auch nur wenig.

Wie bindet man JavaScript richtig ein?

Alle Links und Buttons, bei denen das möglich ist, sollten auch ohne JavaScript funktionieren. Dann halt vielleicht nur nicht so hübsch. Näheres siehe JavaScript-Verweise (Links) mit HTML-Rückfall.

Alle sichtbaren Dinge, die wirklich nur Sinn ergeben, wenn JavaScript aktiviert ist, sollten auch mit JavaScript ins Dokument geschrieben werden. So wäre schon mal der erste Schritt zur Barrierefreiheit getan. Also Erklärungstexte, Buttons und weitere Dinge immer mittels document.write ins Dokument schreiben. Dann erscheinen sie bei ausgeschaltetem JavaScript nicht und verwirren niemanden. Man kann sogar JavaScript mittels JavaScript erzeugen! Näheres siehe JavaScript-Elemente mit JavaScript schreiben.

Ein weiterer vermeidbarer Fehler ist es, bei HTML-Elementen, die mittels JavaScript ins Dokument geschrieben werden sollen, ein ungewolltes Scriptende einzubauen. Ein HTML-Parser, der kein JavaScript kennt, behandelt das Script als beliebige Zeichenkette, deren Inhalt ignoriert wird. Er liest einfach weiter, bis das erste HTML-Tag nach dem Script auftaucht. Dieses beginnt (wie alle HTML-Tags) mit "</". Deshalb darf in Scripten kein "</" stehen. Statt dessen ist "<\/" zu verwenden! Näheres siehe HTML innerhalb eines SCRIPTs.

– — – — – — – — –

Wie bindet man NoScript richtig ein?

Das noscript-Element ist, im Gegensatz zum JavaScript-Element, ein Blockelement! Das heißt, es kann (leider) nicht überall eingesetzt werden, wo ein script-Element eingesetzt werden darf. Dies ist aber auch meist gar nicht nötig.

Wenn man alle JavaScript-Elemente mit einer HTML-Rückfallfunktion versieht oder mittels JavaScript selbst ins Dokument schreibt, wir man das NoScript-Element nur selten brauchen.

– — – — – — – — –

JavaScript-Verweise (Links) mit HTML-Rückfall

Verweise (Links) oder Buttons, die ein neues Dokument mittels JavaScript laden sollen, müssen eine HTML-Rückfallaktion haben. Das heißt, wenn JavaScript deaktiviert ist, verhalten sie sich wie ganz normale Verweise oder Buttons. Wenn JavaScript aktiviert ist, dann starten sie die entsprechende Funktion.

Ein korrekter JavaScript-Verweis mit Rückfallaktion sieht zum Beispiel so aus:

Tipps zu JavaScript (in neuem Fenster)

Quelltext:

<a href="http://bestviewed.de/javascript/" 
onclick="return (window.open(this.href,'_blank') == null);"
title="Dieser Verweis öffnet die JavaScript-Seite in einem neuen Fenster"
>Tipps zu JavaScript (in neuem Fenster)</a>

Dieser Quelltext wertet des Antwort der Funktion window.open aus, um, wenn das Fenster geöffnet wurde, den HTML-Verweis mittels Rückgabewert false abzubrechen (sonst würde die Seite zwei Mal geladen). Damit funktioniert dieser Verweis auch dann, wenn JavaScript aktiviert ist, aber keine neuen Fenster öffnen darf. (Einige Browser erlauben es, einzelne JavaScript-Befehle zu deaktivieren!)

– — – — – — – — –

JavaScript-Elemente mit JavaScript schreiben

Manchmal will man JavaScript-Aktionen starten, für die es keinen HTML-Rückfall gibt. Die dazu gehörenden Elemente sollten auch nicht angezeigt werden, wenn JavaScript nicht aktiviert bzw. vorhanden ist. Daher müssen Buttons und Verweise, die reine JavaScript-Aktionen im aktuellen Dokument auslösen sollen, mittels document.write-Funktion ins Dokument geschrieben werden. Aufgrund der verschiedenen geschachtelten Zeichenketten ist das dann doch etwas trickreich. Nicht zuletzt darf man kein falsches Script-Ende für HTML einbauen.

Quelltext:

<script type="text/javascript">
<!--
document.write(
"<p>Ein korrekter JavaScript-Button, der mit JavaScript ins Dokument geschrieben wird,"
+"sieht so aus:<\/p>"
+"<div class=\"box\">"
+"<button onclick=\"window.open('http://bestviewed.de/javascript/','_blank');\">Tipps<\/button"
+"<\/div>"
); 
// -->
</script>

Urheber © Dr. Joachim Wiesemann

Letzte Aktualisierung: 4.2.2007

– — – — – — – — –

Verweise (Links)