molily: Wann wird <noscript> aufgerufen?

Beitrag lesen

Ein <noscript> bezieht sich immer auf den vorherigen <script>-Bereich. Da ein solcher bei Dir nicht existiert - und so auch nicht entschieden werden konnte, ob dessen Inhalt ausgeführt werden kann - muss der Client sich des <noscript>-Inhalts annehmen.

http://www.w3.org/TR/html401/interact/scripts.html#edef-NOSCRIPT sagt:

"""
The content of a NOSCRIPT element should only be rendered by a script-aware user agent in the following cases:

* The user agent is configured not to evaluate scripts.
    * The user agent doesn't support a scripting language invoked by a SCRIPT element earlier in the document.
"""

Ja gut, aber wo steht, dass der Inhalt eines noscript-Elements auch angezeigt werden muss, wenn kein script-Element vorher im Dokument kam? Das geht daraus nicht hervor.

Man beachte das "earlier in the document". Insbesondere wenn mehr als ein <script>-Bereich und/oder unterschiedliche Script-Sprachen im Spiel sind, ist dies wichtig.

Opera macht das sogar (abgesehen vom noscript ohne script) richtig:

<noscript><p>1</p></noscript>
<script type="blablubsülz">asdf</script>
<noscript><p>2</p></noscript>
<script type="text/javascript">asdf='asdf';</script>
<noscript><p>3</p></noscript>

Opera zeigt bei aktiviertem JavaScript »2« an. Jetzt könnte man darüber streiten, ob gemäß dem Standard auch »3« angezeigt werden müsste, schließlich kam im Dokument vorher ein unbekanntes Script vor. Praktikabler finde ich aber diese Lösung, wo abgefragt wird, ob das letzte script-Element vor dem noscript-Element in einer bekannten Scriptsprache geschrieben war und ausgeführt werden konnte.

Mathias