Sven Rautenberg: Wann wird <noscript> aufgerufen?

Beitrag lesen

Moin!

Ein Browser mit JS würde also nichts zeigen

nein.

Basierend auf der hier folgenden Diskussion:

Doch. Bzw. nein, er würde den Inhalt von <noscript> nicht zeigen.

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.

Die von dir in [pref:t=77928&m=450227] geposteten Regeln sagen:

1. Noscript ist anzuzeigen, wenn der User Agent kein Script ausführen kann (also JS aus ist).
2. Noscript ist anzuzeigen, wenn der User-Agent die Sprache des vorhergehenden Scriptbereiches nicht kennt (weil es z.B. kein JS ist, sondern vbs).

Da in H²0s beispiel kein vorhergehender Skriptbereich existiert, den der Browser nicht ausführen kann, ist der Noscript-Bereich _nicht_ anzuzeigen. Er wird nach diesen Regeln nur dann angezeigt werden, wenn Javascript (und alle anderen vorhandenen Skriptsprachen) abgeschaltet sind.

Die Realität zeigt, dass lediglich Opera auch Regel 2 tatsächlich beherrscht. IE und Firebird (was ich mal stellvertretend für alle Mozillas und Firefoxe nehme) zeigen <noscript> nur dann an, wenn Javascript ausgeschaltet ist, aber nicht, wenn sie die Skriptsprache des exakt vorhergehenden Blockes nicht kennen.

Das Macht aber nur bei diesem Sonderfall einen Unterschied:
<script type="text/vbscript"> ... </script>
<noscript>Ihr Browser kann kein VB-Script</noscript>

IE sollte den Code ausführen (sofern VBScript eingeschaltet ist), Mozilla sollte das <noscript> anzeigen (tut er aber nicht - Opera schon).

- Sven Rautenberg