H²O: Wann wird <noscript> aufgerufen?

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

  1. Hi,

    b ist richtig

    Andy

    1. Hi,

      b ist richtig

      das ist falsch.

      Cheatah

      --
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
  2. 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

    --
    << So long and thanks for all the fish... >>
    1. 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

      1. 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

        --
        << So long and thanks for all the fish... >>
        1. 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

  3. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. 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

      1. 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

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. 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 ?

          1. 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

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. 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

              1. 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.

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. 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

                  1. 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 :-)

                    --
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
                    1. Hi Cheatah

                      Vielen Dank,

                      war sehr aufschlußreich und informativ.
                      werd mir jetzt noch etwas Fußball reinziehn.

                      schönen Abend noch

                      gruß
                      ptr

                      1. 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

                        1. Hi,

                          Meinst du sat.1. Noch 0:0. Wer wird wohl gewinnen???

                          Sat.1 ;-)

                          Cheatah

                          --
                          X-Will-Answer-Email: No
                          X-Please-Search-Archive-First: Absolutely Yes
                          1. 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

            2. 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

              1. 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

                1. 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!

                  --
                  Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
                  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

                    1. 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

                      • der Browser kein Scripting beherrscht
                      • er es beherrscht, aber es deaktiviert ist

                      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

                      --
                      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          2. 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

            1. 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

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        2. 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

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          1. 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

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            1. Hallo.

              Wieviele verscheidene Script-Sprachen sind denn in einem HTML-Dokument gleichzeitig erlauft?

              Wer sollte dies reguliert haben?
              MfG, at

        3. 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