HTML noscript: Ersatzinhalte bei deaktiviertem JavaScript

HTML <noscript> enthält Ersatzinhalt für Situationen, in denen der Browser keine Skripte ausführen kann. Es erkennt keinen fehlgeschlagenen JavaScript-Download oder einen Laufzeitfehler, daher müssen Sie Fehlermeldungen separat implementieren.

Deaktiviertes Scripting und fehlgeschlagene Ausführung sind unterschiedlich

Wenn der Browser so konfiguriert ist, dass Skripte ausgeführt werden, wird der Inhalt innerhalb von noscript nicht als normaler Seiteninhalt angezeigt. Eine fehlende Datei, ein Syntaxfehler oder eine Laufzeitausnahme schaltet die Seite nicht automatisch zu noscript. Wenn Leser eine Anleitung benötigen, wenn eine Funktion fehlschlägt, sollten Sie in Betracht ziehen, eine Nachricht im grundlegenden HTML bereitzustellen und diese erst nach erfolgreicher Skriptausführung zu aktualisieren.

Vollständiges Beispiel: Vergleich zwischen erfolgreicher Ausführung und einem Fehler

Speichern Sie das folgende Dokument als noscript-demo.html und öffnen Sie es in einem Browser. Mit aktiviertem JavaScript ändert sich die Anfangsnachricht zu einer Erfolgsmeldung. Das Beispiel verwendet keine externen Bibliotheken oder Serveranfragen.

<!doctype html>
<html lang="de">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Verhalten von noscript vergleichen</title>
</head>
<body>
  <h1>Übung zum Skriptstatus</h1>
  <p id="status">Das Skript hat diese Meldung noch nicht aktualisiert.</p>
  <noscript>
    <p>Skripting ist derzeit nicht verfügbar. Lesen Sie die grundlegenden Hinweise unten.</p>
  </noscript>
  <p>Grundlegender Hinweis: Sie können diese Seite auch ohne Skripte lesen.</p>
  <script>
    if (new URLSearchParams(location.search).has('fail')) {
      throw new Error('Laufzeitfehler zur Demonstration');
    }
    document.getElementById('status').textContent = 'Das Skript wurde ausgeführt.';
  </script>
</body>
</html>
  1. Öffnen Sie das Dokument mit aktiviertem Skripting. Die Seite zeigt Das Skript wurde ausgeführt. und die grundlegenden Anweisungen an, während die noscript-Nachricht verborgen bleibt.
  2. Öffnen Sie es erneut mit ?fail=1, das an die Adresse angehängt ist. Der Demo-Fehler lässt die ursprüngliche Nachricht bestehen, aber die noscript-Nachricht erscheint nicht, da das Skripting weiterhin aktiviert ist. Sie können den Demo-Fehler in der Konsole der Entwicklerwerkzeuge überprüfen.
  3. Deaktivieren Sie JavaScript für diese Seite über die Browsereinstellungen oder die Entwicklerwerkzeuge und laden Sie sie dann neu, um die noscript-Nachricht anzuzeigen. Das einfache Löschen des script-Elements ist ein anderer Test.
  4. Nach der Übung stellen Sie die ursprüngliche JavaScript-Einstellung wieder her, entfernen die Abfragezeichenfolge aus der Adresse und laden die Seite neu.

Wenn Ihre Umgebung Abfragezeichenfolgen auf Dateiadressen einschränkt, stellen Sie dieselbe Datei über einen lokalen Webserver zum Vergleich bereit. Das Menü und der Umfang des Deaktivierens von Skripten variieren je nach Browser und Entwicklerwerkzeugen, überprüfen Sie daher die entsprechenden Einstellungen. Wenden Sie die Änderung vorübergehend auf der Übungsseite an und stellen Sie sie anschließend wieder her, anstatt Skripting im gesamten Browser zu deaktivieren.

Grundlegende Inhalte und Hinweise in body beibehalten

Fügen Sie normale Fallback-Absätze und Links innerhalb von body ein, wie es das Beispiel zeigt. Der zulässige Inhalt von noscript innerhalb von head ist eingeschränkt, daher fügen Sie dort keine Absätze oder Schaltflächen ein. Verschachteln Sie kein noscript innerhalb eines anderen.

Wenn JavaScript alle wesentlichen Erklärungen oder Kontaktmöglichkeiten erzeugt, können Leser den Zugriff verlieren, wenn es nicht ausgeführt wird. Stellen Sie Inhalte nach Möglichkeit bereits im initialen HTML bereit und erweitern Sie dann schrittweise die Teile, die Interaktion erfordern. Dies reduziert die Abhängigkeit von einer reinen Ersatzmeldung. Gehen Sie nicht davon aus, dass noscript Fehlerbehebung oder Sicherheitsfunktionen bietet; der MDN-Referenz zu noscript erklärt seine Anzeigebedingungen.