Wann wird <noscript> aufgerufen?
H²O
- javascript
Hallo.
Wann wird noscript eigentlich aufgerufen.
a) wenn ein JS nicht ausgeführt wurde
oder
b) wenn im Browser JS ausgeschaltet ist?
Würde mich interessieren, denn dann wüsste ich, ob man noscript auch einfach so in eine Datei schreiben kann und bei Leuten, die kein JS haben wird das angezeigt.
Danke, H²O
Hi,
b ist richtig
Andy
Hi,
b ist richtig
das ist falsch.
Cheatah
Hallo H²O
hier steht, was du wissen willst:
http://selfhtml.teamone.de/html/transit/scripts.htm#noscript
P.S. Bitte schau bei solch einfachen Fragen vorher mal auf den SELFHTML-Seiten nach oder nutze die QUICKBAR - hier findest du sowas direkt.
MfG,
Arthur
Hi.
P.S. Bitte schau bei solch einfachen Fragen vorher mal auf den SELFHTML-Seiten nach oder nutze die QUICKBAR - hier findest du sowas direkt.
Hab ich:
Ich habe die Quickbar benutzt. Allerdings gibt es da nur unter noscript einen Link nach http://selfhtml.teamone.de/javascript/objekte/htmlelemente.htm#noscript
Dort ist das sehr schlecht erklärt und ich dachte das wäre die einzige Seite zu noscript.
Dein Link:
http://selfhtml.teamone.de/html/transit/scripts.htm#noscript
ist besser, aber den habe ich leider nicht gefunden.
Danke, H²O
Hallo nochmal,
Ich habe die Quickbar benutzt. Allerdings gibt es da nur unter noscript einen Link nach http://selfhtml.teamone.de/javascript/objekte/htmlelemente.htm#noscript
Dort ist das sehr schlecht erklärt und ich dachte das wäre die einzige Seite zu noscript.
Dein Link:http://selfhtml.teamone.de/html/transit/scripts.htm#noscript
ist besser, aber den habe ich leider nicht gefunden.
Ich habe auch die Quickbar benutzt, allerdings hab ich unter HTML gesucht (da html-tag) und nicht unter JavaScript.
MfG,
Arthur
Hallo.
Ich habe auch die Quickbar benutzt, allerdings hab ich unter HTML gesucht (da html-tag) und nicht unter JavaScript.
Oh, sorry. Ich dachte das würde nur unter JS stehen.
Danke nochmal, H²O
Hello,
Wann wird noscript eigentlich aufgerufen.
a) wenn ein JS nicht ausgeführt wurde
oder
b) wenn im Browser JS ausgeschaltet ist?
Wenn der Browser kein JavaScript kennt, kennt er auch den <noscript>-Tag nicht. Also ignoriert er ihn. Der Handler des Tags wird also nicht aufgerufen, da es gar keinen gibt. Die Tags <noscript> und </noscript> sind damit "unsichtbar" für den HTML-Parser.
Der Text, der zwischen den beiden Tags steht, ist somit ganz normaler HTML-Text und wird geparst.
Wenn der Browser nun JavaScript kennt, löst der <noscript>-Tag ein Spool bis zum </noscript> aus. Der Text dazwischen wird also überlesen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo.
Das heißt dann also, dass eine HTML Datei auch so aussehen könnte:
<html>
<head>
...
</head>
<body>
<noscript>
Hallo.
</noscript>
</body>
Ein Browser mit JS würde also nichts zeigen und ein Browser ohne JS würde "Hallo" zeigen.
Richtig?
Danke nochmal, H²O
Hi,
Ein Browser mit JS würde also nichts zeigen
nein. 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.
Cheatah
HI
nein. 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.
Das würde mich jetzt aber doch interessieren, ob das stimmt.
Hatte das bis jetzt auch immer anders verstanden (So wies H2O geschrieben hatte) und das auch gleich mal ausprobiert.
Ohne Script, aber mit noscript-Bereich.
Meine Browser (IE, NS, Opera, Mozilla, Firebird) habens mit aktiviertem JS nicht angezeigt.
Gibt also 2 Möglichkeiten:
a. deine Aussage ist falsch
b. die Browser machens falsch
was ist richtig ?
Hi,
Meine Browser (IE, NS, Opera, Mozilla, Firebird) habens mit aktiviertem JS nicht angezeigt.
ich unterstelle, dass diese Browser hier ein Zugeständnis an gängige Praxis machen.
a. deine Aussage ist falsch
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.
"""
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.
Cheatah
Hi Cheatah,
danke für Antwort und Link.
@all :
* The user agent is configured not to evaluate scripts.
Hier bin ich mir noch nicht ganz im Klaren darüber, wie ich das interpretieren soll.
Was gibts eigentlich alles für Scripts, die eingebunden werden können.
gruß
ptr
Hi,
* The user agent is configured not to evaluate scripts.
Hier bin ich mir noch nicht ganz im Klaren darüber, wie ich das interpretieren soll.
"der Browser ist so konfiguriert, dass er keine Scripts ausführt." - Sprich: JavaScript ist deaktiviert.
Was gibts eigentlich alles für Scripts, die eingebunden werden können.
Im Prinzip ist jede Sprache denkbar, es muss sie nur irgendeine Rendering Engine[1] beherrschen. In der Praxis dürften vor allem JavaScript, JScript, VBScript und ähnliche von Relevanz sein; das W3C nennt TCL als Beispiel.
Cheatah
[1] Das kann auch serverseitig geschehen, z.B. mit PerlScript.
Okay, thanks
Um sicherzugehen sollte nach deinen Ausführungen dann doch genügen, einfach einen Javascript-Bereich ohne Einfluß auf die Seite vor dem noscript-Bereich einzufügen.
Ob der dann auch leer sein kann?
Oder müßte er Code enthalten?
gruß
ptr
Hi,
Um sicherzugehen sollte nach deinen Ausführungen dann doch genügen, einfach einen Javascript-Bereich ohne Einfluß auf die Seite vor dem noscript-Bereich einzufügen.
ja, das würde nicht schaden.
Ob der dann auch leer sein kann?
Das W3C definiert nicht die entsprechenden Sprachen, der Inhalt ist also prinzipiell[1] egal und kann auch leer sein.
Cheatah
[1] Die Zeichenfolge "</" beendet den <script>-Bereich, auf sie sollte also verzichtet werden :-)
Hi Cheatah
Vielen Dank,
war sehr aufschlußreich und informativ.
werd mir jetzt noch etwas Fußball reinziehn.
schönen Abend noch
gruß
ptr
Hallo peter.
war sehr aufschlußreich und informativ.
Seh ich auch so.
werd mir jetzt noch etwas Fußball reinziehn.
Meinst du sat.1. Noch 0:0. Wer wird wohl gewinnen???
Danke nochmal für alles, H²O
Hi,
Meinst du sat.1. Noch 0:0. Wer wird wohl gewinnen???
Sat.1 ;-)
Cheatah
Hi
Sat.1 ;-)
Ja, und ich (etwas Entspannung)
Schade, ich finde die ganzen Zwischenreinschreiber haben diesen ganzen Thread inzwischen ziemlich unübersichtlich gemacht.
Viel mehr Info kam meiner Meinung nach nicht dabei rum.
Und wenn man sich nicht eh mit dem Thema auskennt auskennt, sondern sich hier im Forum informieren will, hat man jetzt keinen Überblick mehr und so gut wie keine Chance, die wichtigen Infos rauszulesen.
gruß
ptr
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
HI
* The user agent is configured not to evaluate scripts.
^^^
Also nach genauerem Lesen und ein paar Gedanken: Das ist Mehrzahl, er sollte es also anzeigen, wenn keine Scripts ausgeführt werden. Wenn JS deaktiviert ist, bedeudet das ja nicht, daß keine Scripts ausgeführt werden, sondern nur, daß kein JS ausgeführt wird. Also sollte eigentlich das, was im noscript-Bereich steht, angezeigt werden.
Das hab ich hier in diesem Thread gelernt, daß das noscript nicht nur für JS zuständig ist.
»»......................
Opera macht das sogar (abgesehen vom noscript ohne script) richtig:
????? also isses falsch, daß ers nicht anzeigt! ..?
gruß
ptr
Hi,
Opera macht das sogar (abgesehen vom noscript ohne script) richtig:
????? also isses falsch, daß ers nicht anzeigt! ..?
Richtig. Da vorher keine Scriptsprache verwendet wurde, wird damit angezeigt, ob der Browser prinzipiell scriptfähig ist.
Gruß, Cybaer
PS: Nur der Navigator 2.0 rendert NOSCRIPT auch bei aktiviertem JavaScript - NOSCRIPT kam erst mit JavaScript 1.1!
Hi Cybaer,
das hab ich bei Netscape in der Tag reference unter 'noscript' gefunden:
(http://devedge.netscape.com/library/manuals/1998/htmlguide/)
NOSCRIPT
(alternative text for JavaScript)
The NOSCRIPT tag specifies the content for a browser to display when JavaScript is not available or enabled. Navigator 3.0.
Syntax
<NOSCRIPT>...</NOSCRIPT>
Das weicht ja nun konsequent von dem ab, was das W3C schreibt.
Die machen alle, was sie wollen.
Hab mir schon die Finger wundgesucht nach Online-Referenz für Opera und IE, ich finds einfach nicht.
Kann jemand weiterhelfen, wo man sowas findet?
Wenn die sich schon nicht ans W3C halten (zumindest teilweise), müßten die doch wenigstens veröffentlichen, was sie machen.
Wo findet mans ?
gruß
ptr
Hi,
Das weicht ja nun konsequent von dem ab, was das W3C schreibt.
Netscape ist der Erfinder von SCRIPT und NOSCRIPT.
Solange neue Definitionen der von Netscape nicht zuwider laufen (und das sehe ich hier *nicht*), solange ist doch alles OK.
Die machen alle, was sie wollen.
Davon ist HTML, CSS & JavaScript voll! =:-o
? Wo ist hier das Problem?
NOSCRIPT wird ausgeführt, wenn
Wenn es außerdem noch ausgeführt wird, wenn er nur die zuvor genutzte Scriptsprache nicht beherrscht, ist das IMHO ein echter Zugewinn, kein Makel.
Gruß, Cybaer
HI,
also ich habe <noscript> blabla</noscript> mitten in einer seite und jeder Browser der javscript kennt
jedoch das javascript in den einstellungen deaktiviert ist den text anzeigt.
Wenn javascript aktiviert ist wird der text nicht angezeigt,so einfach ist das.Das funktioniert mit
allen normalen gängigen browser.Es ist völlig unbedeutend wo das <noscript> steht.
Wenn mans genau nimmt kann man sogar
<noscript><meta http-equiv="REFRESH" content="0; URL=nojava.html"></noscript> als funktion benutzen,wenn die seite
javascript benötigt,welche eine seite weiterleitet,wenn javascript nicht aktiviert ist.
Gruss
Alain
Hi,
Wenn mans genau nimmt kann man sogar
<noscript><meta http-equiv="REFRESH" content="0; URL=nojava.html"></noscript> als funktion benutzen,wenn die seite
javascript benötigt,welche eine seite weiterleitet,wenn javascript nicht aktiviert ist.
Praktisch hast Du Recht, theoretisch darf, laut dem W3C, im Head kein NOSCRIPT stehen.
Gruß, Cybaer
Hello,
nein. Ein <noscript> bezieht sich immer auf den vorherigen <script>-Bereich.
Wo steht das?
http://www.w3.org/TR/WD-html40-970708/interact/scripts.html#h-9.2.2.1. Habe ich das überlesen?
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
nein. Ein <noscript> bezieht sich immer auf den vorherigen <script>-Bereich.
Wo steht das?
http://www.w3.org/TR/WD-html40-970708/interact/scripts.html#h-9.2.2.1. Habe ich das überlesen?
Hier habe ich was gefunden, was auch verständlich sit:
http://www.w3.org/TR/2002/WD-xhtml2-20021211/mod-scripting.html
Das <noscript> will also wissen, auf welchen Typ Script es den Bereich spoolen (überspringen) soll.
Das bringt mich auf die Frage:
Wieviele verscheidene Script-Sprachen sind denn in einem HTML-Dokument gleichzeitig erlauft?
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo.
Wieviele verscheidene Script-Sprachen sind denn in einem HTML-Dokument gleichzeitig erlauft?
Wer sollte dies reguliert haben?
MfG, at
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