dciwam.de / faq / html / sinn-noscript-block

Sinn eines noscript-Blocks

Man muß diese Frage etwas anders stellen: Was passiert, wenn beispielsweise auf einer Webseite JavaScript intensiv benutzt wird, aber der Browser die Scriptsprache nicht kennt oder wenn der Anwender das Interpretieren der Scriptsprache in den Einstellungen seines Browsers ausgeschaltet hat?

In der Regel hat er einen weißen Bildschirm und sieht keine Inhalte geschweige denn irgendwelche Hinweise, worauf er achten soll. Es besteht die Gefahr, daß man unbeabsichtigt manchen Besucher ausschließt.

Im noscript-Block soll der Webautor Hinweise und weiterführende Links schreiben, die allerdings erst dann sichtbar werden, wenn der Browser das Script nicht interpretieren kann. Browser, die gar keine Scriptsprachen kennen, kennen zwar normalerweise auch das <noscript>-Element nicht, aber sie ignorieren den Block einfach und zeigen den Inhalt des Noscript-Bereich ganz normal an.

<html>
<head>
<!-- Meta -->
</head>
<body>
<NOSCRIPT>

<p>Wenn Sie diesen Text lesen können unterstützt Ihr Browser
entweder kein JavaScript oder sie haben es abgeschaltet.</p>

<p>Hier geht es weiter zu der News- und Eingangsseite:
<a href="http://www.mysite.de/news.htm">
http://www.mysite.de/news.htm</a></p>

</NOSCRIPT>
<!-- Inhalte -->
</body>
</html>

Außerdem sollte beachtet werden, daß die Suchroboter der Suchmaschinen hauptsächlich Links, die ohne Ausführung von Scripten im Code stehen, verfolgen und indizieren.

Mit noscript-Block wird der Inhalt ausgeblendet, der durch ein Script ersetzt wurde. Im folgenden Beispiel fügt ein User Agent dynamisch erstellte Daten im Dokument mit ein. Wenn der User Agent das Script nicht unterstützt, kann der Benutzer ruhig die Daten durch einen Link zurückholen. (Quelle: w3.org)

<script type="text/tcl">
...some Tcl script to insert data...
</script>
<noscript>
Access the <A HREF="http://someplace.com/data">data.</A>
</noscript>

Weitere Informationen:
"Designing documents for user agents that don't support scripting"

Beachte:
Kinder von Noscript können nur Blocklevel-Elemente sein:

<!--
   HTML has two basic content models:
       %inline;     character level elements and text strings
       %block;      block-like elements e.g. paragraphs and lists
-->

<!ENTITY % block
    "P | %heading; | %list; | %preformatted; | DL | DIV | CENTER |
     NOSCRIPT | NOFRAMES | BLOCKQUOTE | FORM | ISINDEX | HR |
     TABLE | FIELDSET | ADDRESS">

<!ENTITY % flow "%block; | %inline;">

(Quelle: http://www.w3.org/TR/html4/strict.dtd)

Bei der Gestaltung des noscript-Blocks gelten die gleichen Regeln, wie sonst in HTML auch:

Eine Aufteilung zwischen 'inline'- und 'block'-Elemente ist notwendig, um eine "logische" Unterscheidung zwischen diesen beiden Elementen zu schaffen.

Mit Blocklevel-Elementen wird definiert, was logisch zusammenhängt. Mit Inline-Elementen werden einzelne Teile eines logisch zusammenhängenden Absatzes (Blocks) markiert. Dabei kommt es bei einigen Elementen auf den Kontext an, ob es sich bei ihnen um Blocklevel- oder Inline-Elemente handelt:

<noscript><p>...<a>...</a>...</p>...</noscript>

noscript-Block kann nur zwischen <body> ... </body> aufgebaut werden:

<!ENTITY % head.misc "(script|style|meta|link|object)*">

<!-- content model is %head.misc; combined with a single
    title and an optional base element in any order -->

<!ELEMENT head (%head.misc;,
    ((title, %head.misc;, (base, %head.misc;)?) |
     (base, %head.misc;, (title, %head.misc;))))>

Folgendes Beispiel zeigt, wie man die Besucher automatisch weiterleiten kann, wenn der "noscript"-Fall eintritt:

<head>
<noscript>
<meta http-equiv="refresh" content="1;url=http://www.DifferentPage.com">
</noscript>
<!-- meta ... etc. -->
</head>

Man beachte jedoch:
diese Variante ist eine umstrittene und nicht ganz legale Methode, die auch nicht mit jedem Browser funktioniert und von daher nicht angewendet werden sollte!

Huschiar Madjidi • http://www.netandmore.de

Zum Seitenanfang

URL: http://dciwam.de | Letzte Änderung: 20.05.2009 | G. Schneider | Kontakt