Sebastian Becker: noscript auskommentieren

Hallo,

und noch 'ne Frage:

manchmal verwendet man ja bekanntlich Skripts für neuere Javaskript-Versionen, die dann nur von den entsprechenden Browser verarbeitet werden. Für die Browser mit deaktiviertem Javaskript hingegen gibt es den noscript-code. Wenn ich diesen nun auch für die restlichen (älteren) Browser anbieten will, müßte es doch möglich sein, die noscript-tags per JavaScript auszukommentieren. Ich habe das auch schon mal gesehen, bin mir aber nicht sicher, ob das immer funktioniert und ob das konform mit den geltenden Standards ist?

Danke für alle Kommentare, Grüße,

Sebastian

  1. Hi, Sebastian

    Wenn ich diesen nun auch für die restlichen (älteren) Browser anbieten will, müßte es doch möglich sein, die noscript-tags per JavaScript auszukommentieren.

    Ich glaube, du hast da ein kleines Verständnisproblem. <noscript> ist, wie du schon richtig gesagt hast, für Browser, bei denen Javascript vollständig deaktiviert (oder gar nicht verfügbar) ist. Diese Inhalte werden dann - und nur dann - dargestellt. Siehe http://selfhtml.teamone.de/html/transit/scripts.htm#noscript

    Ist nun Javascript aktiv, wird dagegen alles, was in <script ... steht berücksichtigt und evt. auch ausgeführt und <noscript> ignoriert.

    Was willst du denn erreichen?

    LG Orlando

    1. Hi, Sebastian

      Wenn ich diesen nun auch für die restlichen (älteren) Browser anbieten will, müßte es doch möglich sein, die noscript-tags per JavaScript auszukommentieren.

      Ich glaube, du hast da ein kleines Verständnisproblem. <noscript> ist, wie du schon richtig gesagt hast, für Browser, bei denen Javascript vollständig deaktiviert (oder gar nicht verfügbar) ist. Diese Inhalte werden dann - und nur dann - dargestellt. Siehe http://selfhtml.teamone.de/html/transit/scripts.htm#noscript

      Ist nun Javascript aktiv, wird dagegen alles, was in <script ... steht berücksichtigt und evt. auch ausgeführt und <noscript> ignoriert.

      Was willst du denn erreichen?

      Da ich ein fauler Mensch bin, will ich mir ersparen, besonderen Code für die älteren Browser zu schreiben, weil die ja auch mit den Inhalten gut bedient sind, die zwischen den noscript-tags stehen.

      Da Du da ein kleines Verständnisproblem hast ;-) , folgt am Schluß ein funktionierendes Beispiel, bei dem ich den Link zur Demonstration des Prinzips sichtbar gemacht habe.

      Grüße,

      Sebastian

      --------------- schnipp ---------------

      <script language="JavaScript1.2">
      <!--
      var badbrowser=false;
      // -->
      </script>

      <script language="JavaScript">
      <!--
      // make noscript tag invisible
      if(badbrowser==false)document.write("<!-"+"- ");
      // -->
      </script>

      <noscript>

      <script language="JavaScript">
      <!--
      if(badbrowser==false)document.write(" -"+"->");
      // -->
      </script>

      <a href="http://www.berlin.de" target="_blank">noscript and old browser link</a>

      <script language="JavaScript">
      <!--
      if(badbrowser==false)document.write("<!-"+"- ");
      // -->
      </script>

      </noscript>

      <script language="JavaScript">
      <!--
      if(badbrowser==false)document.write(" -"+"->");
      // -->
      </script>

      1. Hi, Sebastian

        Da ich ein fauler Mensch bin, will ich mir ersparen, besonderen Code für die älteren Browser zu schreiben, weil die ja auch mit den Inhalten gut bedient sind, die zwischen den noscript-tags stehen.

        Du meinst natürlich, das hat nichts mit alten Browsern, sondern mit genervten Surfern zu tun. Auch alte Browser beherrschen Javascript und in neueren ist es relativ oft deaktiviert.

        Da Du da ein kleines Verständnisproblem hast ;-) , folgt am Schluß ein funktionierendes Beispiel, bei dem ich den Link zur Demonstration des Prinzips sichtbar gemacht habe.

        Ich sehe, was du meinst - allerdings, weiß ich nicht, was du willst. Dass du zu faul bist, glaube ich dir nicht, denn dann hättest du dir nicht so viele Gedanken darüber gemacht und etwas gebastelt. Eine Javascript-Lösung, die bewirkt, dass der noscript-Bereich auskommentiert wird, ist mir allerdings wirklich neu *g*. Bleibt nur die Frage: wozu?

        LG Orlando

        1. Hi, Orlando,

          Da ich ein fauler Mensch bin, will ich mir ersparen, besonderen Code für die älteren Browser zu schreiben, weil die ja auch mit den Inhalten gut bedient sind, die zwischen den noscript-tags stehen.

          Du meinst natürlich, das hat nichts mit alten Browsern, sondern mit genervten Surfern zu tun. Auch alte Browser beherrschen Javascript und in neueren ist es relativ oft deaktiviert.

          Ich habe mich schon richtig ausgedrückt, denn es geht darum, auch den Browsern, die zwar Javascript, aber nicht z.B. Javascript 1.2 beherrschen, etwas anzubieten. Und wie weit die Surfer hierbei durch irgendetwas genervt werden, kann ich nicht beurteilen ...

          Ich sehe, was du meinst - allerdings, weiß ich nicht, was du willst.

          Siehe meine ursprüngliche Frage ...

          Dass du zu faul bist, glaube ich dir nicht, denn dann hättest du dir nicht so viele Gedanken darüber gemacht und etwas gebastelt. Eine Javascript-Lösung, die bewirkt, dass der noscript-Bereich auskommentiert wird, ist mir allerdings wirklich neu *g*.

          Ich hatte angenommen, daß man sich das ;-) dazudenken kann und auch ein alter Hase lernt nie aus ...

          Bleibt nur die Frage: wozu?

          siehe oben - Die Alternative für alle Perfektionisten wäre ja sonst, die zwischen den noscript-tags stehenden Inhalte z.B. noch mal per document.write auszugeben und das könnte ja ein ganz schön umfangreicher zusätzlicher Code werden ...

          Grüße,

          Sebastian

          1. Hi, Sebastian

            Jetzt habe ich versehentlich meine Antwort gelöscht. Naja, kurz nochmal:

            Ich habe mich schon richtig ausgedrückt, denn es geht darum, auch den Browsern, die zwar Javascript, aber nicht z.B. Javascript 1.2 beherrschen, etwas anzubieten.

            Hörst du's? Der Groschen ist gefallen :) Gibt's denn tatsächlich so große Schwierigkeiten mit den JS-Versionen? Nachdem ohnehin DOM angesagt ist, denke ich, deine Idee könnte schon wieder überholt sein. Ich muss keine Veteranen mit Scripts versorgen.

            Und wie weit die Surfer hierbei durch irgendetwas genervt werden, kann ich nicht beurteilen ...

            Das bezog sich auf deaktiviertes JS (wie bei mir).

            siehe oben - Die Alternative für alle Perfektionisten wäre ja sonst, die zwischen den noscript-tags stehenden Inhalte z.B. noch mal per document.write auszugeben und das könnte ja ein ganz schön umfangreicher zusätzlicher Code werden ...

            Ob das ganz sauber ist? Was sagt denn der Vali dazu? Naja, auf jeden Fall wünsche ich dir viel Spaß beim Austesten aller Browser ;-p

            LG Orlando

            1. Hi, Sebastian

              Hörst du's? Der Groschen ist gefallen :)

              Hoffentlich nicht in ein Groschengrab ...

              Gibt's denn tatsächlich so große Schwierigkeiten mit den JS-Versionen? Nachdem ohnehin DOM angesagt ist, denke ich, deine Idee könnte schon wieder überholt sein. Ich muss keine Veteranen mit Scripts versorgen.

              So könnte man z.B. auch Browsern, die zwar Javascript oder Javascript1.4, aber nicht Javascript 1.5 beherrschen, etwas anbieten. Somit erscheint mir die Idee nicht als generell überholt - auch wenn ich cross-browser-scripting grundsätzlich bevorzuge.

              Ob das ganz sauber ist? Was sagt denn der Vali dazu? Naja, auf jeden Fall wünsche ich dir viel Spaß beim Austesten aller Browser ;-p

              Gerade zu dem Thema wollte ich ja was hören - aber ist wohl die falsche Zeit ...

              Grüße,

              Sebastian

        2. hi

          Du meinst natürlich, das hat nichts mit alten Browsern, sondern mit genervten Surfern zu tun. Auch alte Browser beherrschen Javascript und in neueren ist es relativ oft deaktiviert.

          in der Tat, die Chance auf einen browser zu stoßen, der JS kann, es abder deaktiviert hat, dürfte um ein vielfaches höher sein, als auf einen zu stoßen, der es wirklich nicht kann!

          Grüße aus Bleckede

          Kai

          1. Hi, Kai

            ...wenn ich dich schon da hab'. :)

            in der Tat, die Chance auf einen browser zu stoßen, der JS kann, es abder deaktiviert hat, dürfte um ein vielfaches höher sein, als auf einen zu stoßen, der es wirklich nicht kann!

            ACK

            Wie sieht's denn bei Mozilla mit dem selektiven Deaktivieren von JS aus? Da kommt ja dann <noscript> auch nicht wirklich zum Zug. IMHO geht da viel in die Hose, weil gar dann nichts mehr funktioniert. Ist da was geplant? Einfach _nichts_ anzubieten halte ich für ziemlich ungeschickt.

            LG Orlando

            1. hi

              Wie sieht's denn bei Mozilla mit dem selektiven Deaktivieren von JS aus? Da kommt ja dann <noscript> auch nicht wirklich zum Zug. IMHO geht da viel in die Hose, weil gar dann nichts mehr funktioniert. Ist da was geplant? Einfach _nichts_ anzubieten halte ich für ziemlich ungeschickt.

              das selektive Abschalten bezieht sich bisher nur auf Dinge, die zu annähernd 100% für generve genutzt werden.
              Wenn man nicht mehr in die Statusleiste schreiben kann oder das Fenster verschieben, geht ja nix verlohren.

              Grüße aus Bleckede

              Kai

      2. Hi Sebastian,

        was spricht denn gegen das klassische

        <script language="JavaScript">
        <!--
        if(badbrowser==true)document.write('<a href="http://www.berlin.de" target="_blank">noscript and old browser link</a>');
        // -->
        </script>

        <noscript>
        <a href="http://www.berlin.de" target="_blank">noscript and old browser link</a>
        </noscript>

        außer vielleicht dass Du ganz am Anfang badbrowser auf true setzen musst? Wenn ich das richtig überblicke ist das mit Copy&Paste sogar eher weniger Aufwand als Dein Ansatz.

        Grüße,

        Utz

        1. Hi, Utz

          <a href="ohnejs.html" onclick="window.location.href='mitjs.html'; return false;">Link</a>

          ist wohl der wenigste Aufwand. Allerdings geht's Sebastion wohl um etwas anderes.

          LG Orlando

        2. Hallo, Utz,

          was spricht denn gegen das klassische [...] Wenn ich das richtig überblicke ist das mit Copy&Paste sogar eher weniger Aufwand als Dein Ansatz.

          das war doch nur ein _Beispiel_!!!

          In Wirklichkeit geht es natürlich nicht um das Schreiben eines simplen Links, sondern um viel umfangreicheren Code.

          Grüße,

          Sebastian

          1. Hallo Sebastian,

            das war doch nur ein _Beispiel_!!!

            In Wirklichkeit geht es natürlich nicht um das Schreiben eines simplen Links, sondern um viel umfangreicheren Code.

            ...bei dem aus welchem Grund jetzt nochmal Copy&Paste nicht in Frage kommt? Sorry, ich kann immer noch nicht erkennen, welche Vorteile eine Browserweiche über dynamische Auskommentierung von Noscript gegenüber einer herkömmlichen Browserweiche haben soll. Mal ganz davon abgesehen dass Deine Konstruktion <noscript><script>...</script></noscript> ja schon ein bisschen krank ist und ich keinem Browser böse sein könnte, der bei sowas einfach abstürzt.

            Grüße,

            Utz

            1. Hallo Utz,

              aus welchem Grund jetzt nochmal Copy&Paste nicht in Frage kommt? Sorry, ich kann immer noch nicht erkennen, welche Vorteile eine Browserweiche über dynamische Auskommentierung von Noscript gegenüber einer herkömmlichen Browserweiche haben soll.

              Mit Copy&Paste ist es ja nicht getan, sondern ich müßte den gesamten Code aus dem noscript-Bereich per document.write ausgeben.

              Mal ganz davon abgesehen dass Deine Konstruktion <noscript><script>...</script></noscript> ja schon ein bisschen krank ist und ich keinem Browser böse sein könnte, der bei sowas einfach abstürzt.

              Bislang hat's funktioniert. Und soo krank kann es - auch von der Logik her - eigentlich nicht sein, zumal ich nicht der erste bin, der darauf kommt.

              Grüße,

              Sebastian

              1. Hi Sebastian!

                Mal ganz davon abgesehen dass Deine Konstruktion <noscript><script>...</script></noscript> ja schon ein bisschen krank ist und ich keinem Browser böse sein könnte, der bei sowas einfach abstürzt.

                Bislang hat's funktioniert. Und soo krank kann es - auch von der Logik her - eigentlich nicht sein, zumal ich nicht der erste bin, der darauf kommt.

                Natürlich ist das krank, Du hast einen noscript-Bereich, dieser wird nur ausgeführt, wenn JS deaktiviert ist und _in diesen_ schreibst Du wieder JS rein??? Kannst Du mir das mal erklären?

                Clemens

                1. Hallo, Clemens,

                  Mal ganz davon abgesehen dass Deine Konstruktion <noscript><script>...</script></noscript> ja schon ein bisschen krank ist und ich keinem Browser böse sein könnte, der bei sowas einfach abstürzt.

                  Bislang hat's funktioniert. Und soo krank kann es - auch von der Logik her - eigentlich nicht sein, zumal ich nicht der erste bin, der darauf kommt.

                  Natürlich ist das krank, Du hast einen noscript-Bereich, dieser wird nur ausgeführt, wenn JS deaktiviert ist und _in diesen_ schreibst Du wieder JS rein??? Kannst Du mir das mal erklären?

                  du gehst von einer falschen Prämisse aus, die aus mangelndem Vorstellungsvermögens über das mögliche Ausmaß von Mißverständnissen bislang gar nicht bemerkt hatte:

                  Ich schreibe keineswegs <noscript><script>...</script></noscript> , sondern <script><noscript></script>....<script></noscript></script>. Entsprechend dem thread-Titel wird also noscript auskommentiert und nicht etwa Javascript im noscript-Bereich geschrieben (nur das könnte man bei unvorsichtiger Sprachwahl vielleicht als "krank" bezeichnen).

                  Grüße,

                  Sebastian

                  1. hi

                    Ich schreibe keineswegs <noscript><script>...</script></noscript> , sondern <script><noscript></script>....<script></noscript></script>.

                    das ist noch viel kränker, weil es schlichtweg ungültiges HTML ist! - und zu NICHTS führt.

                    Grüße aus Bleckede

                    Kai

                    1. Hi, Kai

                      Ich schreibe keineswegs <noscript><script>...</script></noscript> , sondern <script><noscript></script>....<script></noscript></script>.

                      das ist noch viel kränker, weil es schlichtweg ungültiges HTML ist! - und zu NICHTS führt.

                      Na übertreiben wir's nicht. Das language-Attribut stört mich, sonst funktioniert's  -> </?m=61429&t=11092>

                      LG Orlando

                      1. hi

                        Ich schreibe keineswegs <noscript><script>...</script></noscript> , sondern <script><noscript></script>....<script></noscript></script>.

                        das ist noch viel kränker, weil es schlichtweg ungültiges HTML ist! - und zu NICHTS führt.

                        Na übertreiben wir's nicht. Das language-Attribut stört mich, sonst funktioniert's  -> </?m=61429&t=11092>

                        öhm..?
                        das bewirkt:
                        <noscript> hat kein Endtag (für das erste)
                        </noscript> unnötig (für das zweite)

                        und ich glaube nicht, dass IRGENDEIN Browser so verquert denkt, selbst der MSIE nicht *g*

                        Grüße aus Bleckede

                        Kai

                        1. hi Kai,

                          das bewirkt:
                          <noscript> hat kein Endtag (für das erste)
                          </noscript> unnötig (für das zweite)

                          Ist ja Quatsch, Code lesen müßte man können ...

                          und ich glaube nicht, dass IRGENDEIN Browser so verquert denkt, selbst der MSIE nicht *g*

                          Komisch, daß es funktioniert ...

                          Übrigens: Wo liegt eigentlich Blekede, bei Posemuckel?

                          Grüße,

                          Sebastian

                          1. hi

                            Ist ja Quatsch, Code lesen müßte man können ...

                            wieso? Nochmal:
                            <script><noscript></script>
                                              ^ DA vermisst Vali 'nen </noscript>

                            </script></noscript></script>
                                     ^ DA fragt sich Vali, was das Ding hier soll

                            Zumindest das zweite geht auch dem MSIE am A. vorbei, also das einzige, was passieren kann, ist dass alles hinter dem <noscript> nur gezeigt wird, wenn JS funzt - oder das <noscript> wird geschlossen, weil das übergeordnete Element weg ist.

                            Übrigens: Wo liegt eigentlich Blekede, bei Posemuckel?

                            von Hamburg knapp 100km Elbaufwärte

                            Grüße

                            Kai

              2. Hi Sebastian,

                Mit Copy&Paste ist es ja nicht getan, sondern ich müßte den gesamten Code aus dem noscript-Bereich per document.write ausgeben.

                Irgendwann biete ich mal ne Schulung "Copy&Paste" an - inkl. der Unterrichtseinheit "Code aus Noscript kopieren und in document.write pasten - Planung und Ausführung". Du darfst gerne teilnehmen :-)

                Mal im Ernst: Du bist offensichtlich wild entschlossen, Deine Noscript-Auskommentier-Variante zu benutzen und scheinst auf eine Art Absolution dafür von uns zu hoffen - die Dir aber keiner erteilt, weil bisher niemandem die Sinnhaftigkeit Deines Vorhabens einsichtig geworden wäre. Tja, da wirst Du es halt ohne Absolution und auf eigene Kappe verwenden müssen, wenn Du es denn willst...

                Grüße,

                Utz

  2. Hi,

    nachdem ich den gesamten Thread gelesen habe,
    denke ich, eine mögliche Lösung für Dein Problem wäre folgende:

    im <head>:

    (...)
    <script language="JavaScript1.2" type="text/javascript">
    <!--
    document.write('<link rel="stylesheet" href="verstecken.css" type="text/css">');
    // -->
    </script>
    (...)

    im <body>:

    (...)
    Inhalte für alle
    <div id="versteckt">
    Inhalte für alte Browser und für ohne Javascript
    </div>
    Inhalte für alle
    (...)

    Inhalt von verstecken.css:

    #versteckt { display:none; }

    Sollte funktionieren und ist relativ sauber (wenn man im Zusammenhang mit document.write von "sauber" sprechen kann),
    aber es gibt sicherlich noch einige andere Möglichkeiten...

    Schönen Gruß aus Bilk

    Rainer