Patrick Ryba: Clientseitige JavaScript-Erkennung

Hallo HTML-Experten,

eine HTML-Datei soll für mich erkennen, ob beim Client gerade JavaScript aktiviert ist oder nicht... und dann entsprechend eine Weiterleitung zur passenden Seite veranlassen...

Ich habe dafür einen Ansatz gefunden, weiß aber nicht, ob dieser allgemein angesehen bzw. immer gültig ist... bei meinen Opera-Experimenten funktionierte zumindest alles tadelos!

Hier der Code:

  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
"http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">  
  <meta http-equiv="refresh" content="0; URL=application_noscript.htm">  
  <meta http-equiv="expires" content="0">  
  <title>Application</title>  
  <link rel="stylesheet" type="text/css" href="styles/style.css" />  
</head>  
<body>  
  <script language="JavaScript">  
    <!--  
    window.location.href = 'application.htm';  
    -->  
  </script>  
  <noscript>  
    <h5 align=center>  
      Für eine manuelle Weiterleitung klicken Sie  
      <a href="application_noscript.htm">hier</a>.  
    </h5>  
  <noscript>  
</body>  
</html>  

Für Hinweise, Tipps aber auch Kritik bin ich offen!

  1. Lieber Patrick,

    <script language="JavaScript">
        <!--
        window.location.href = 'application.htm';
        -->
      </script>

    das wird sicherlich seinen Dienst erfüllen, syntaktisch ist das aber nicht gut! Besser so:

    <script type="text/javascript">//<![CDATA[  
        window.location.href = "application.htm";  
    //]]></script>
    

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo Felix

      <script type="text/javascript">//<![CDATA[

      window.location.href = "application.htm";
      //]]></script>

        
      Ist CDATA wirklich nötig? Auch bei HTML 4.01 Transitional?  
      Ich weiss das wirklich nicht!  
        
      Danke für deine Antwort,  
      nam
      
      1. <script type="text/javascript">//<![CDATA[

        window.location.href = "application.htm";
        //]]></script>

        
        >   
        > Ist CDATA wirklich nötig? Auch bei HTML 4.01 Transitional?  
          
        In HTML 4 ist es prinzipiell nicht nötig.  
        Bei dem konkreten Elementinhalt ist auch in XHTML 1 nicht nötig.  
          
        Mathias
        
        -- 
        [JavaScript-Erweiterung für das SELFHTML-Forum](http://forum.de.selfhtml.org/js/doku/)
        
  2. Für Hinweise, Tipps aber auch Kritik bin ich offen!

    Die "falls nicht JavaScript"-Weiterleitung solltest du per <http://de.selfhtml.org/html/kopfdaten/meta.htm#weiterleitung@title=http-equiv (refresh)> erledigen.

    Besser noch:
    Gestalte deine Seite so, dass sie auch Ohne JavaScript zuverlässig funktioniert. Wenn ein Benutzer ohne JavaScript auf einen Deeplink auf deine JavaScript-Version verfolgt, wird er ggf. nicht glücklich werden.

    1. Hi,

      Die "falls nicht JavaScript"-Weiterleitung solltest du per <http://de.selfhtml.org/html/kopfdaten/meta.htm#weiterleitung@title=http-equiv (refresh)> erledigen.

      Wozu?

      Wenn's schon sein muß:
      Per Javascript auf die Script-abhängige Variante weiterleiten.
      Wenn Javascript abgeschaltet ist, bleibt man auf der Seite.

      Besser noch:
      Gestalte deine Seite so, dass sie auch Ohne JavaScript zuverlässig funktioniert.

      Dem schließe ich mich an.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. Besser noch:
      Gestalte deine Seite so, dass sie auch Ohne JavaScript zuverlässig funktioniert. Wenn ein Benutzer ohne JavaScript auf einen Deeplink auf deine JavaScript-Version verfolgt, wird er ggf. nicht glücklich werden.

      Danke für den Tipp...

      ich achte auch bereits darauf, aber in diesem Fall ging's mir um's Prinzip!

  3. Meistens kann eine Website mit JavaScript aufgewertet werden, ohne dass eine separate Version vonnöten ist. Das nennt sich Unobtrusive JavaScript und verbessert die bestehende, zugängliche Version mit JavaScript-Interaktivität. Insofern solltest du prüfen, ob wirklich zwei Seitenversionen nötig sind.

    In jeden Fall ist jedoch eine leere Weiterleitungsseite (neben application.htm und application_noscript.htm) unnötig. application_noscript.htm kann sofort zu sehen sein. Wenn JavaScript verfügbar ist, leitest du ggf. weiter.

    Mathias

    1. In jeden Fall ist jedoch eine leere Weiterleitungsseite (neben application.htm und application_noscript.htm) unnötig. application_noscript.htm kann sofort zu sehen sein. Wenn JavaScript verfügbar ist, leitest du ggf. weiter.

      Klingt absolut vernünftig... daran habe ich auch schon gedacht!

      Aber dann hätte ich eine weitere Frage:
      Sofern JavaScript aktiviert sein sollte, wird eine Umleitung "sofort" durchgeführt (mit Hilfe von >window.location.href = "..."< ), ODER kann es bereits zu Ladevorgängen von z.B. Bildern kommen, welche durch die Umleitung abgebrochen würden...
      Mir persönlich ist eine "saubere" Umleitung wichtig!

      Da mir das nicht wirklich klar war, habe ich vorerst eine HTML-Datei als "Prüfling" vorgeschoben!

      1. Lieber Patrick,

        Sofern JavaScript aktiviert sein sollte, wird eine Umleitung "sofort" durchgeführt (mit Hilfe von >window.location.href = "..."< ), ODER kann es bereits zu Ladevorgängen von z.B. Bildern kommen, welche durch die Umleitung abgebrochen würden...

        das ist eine Timing-Frage. In der Regel steht Dein JavaScript bereits im <head>, sodass die Weiterleitung erfolgt, sowie der Browser dieses <script>-Element abarbeitet. Stehen vor diesem <script>-Element andere Resourcen verlinkt (z.B. CSS-Dateien mittels <link>-Elemente), werden die auch geladen. Aber im Falle von CSS ist das vielleicht nicht sinnlos, da Du die CSS-Dateien so oder so im Browsercache haben willst.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
      2. Hi,

        Mir persönlich ist eine "saubere" Umleitung wichtig!

        Und generell ist *keine* Umleitung wichtig!

        Oder anders: Wer Umleitungen benutzt a la Non-JS-Page/JS-Page, der hat IMHO HTML/JS noch nicht so ganz verstanden. Und macht sich gerne mehr Arbeit als nötig (soll's ja auch geben).

        Oder warum brauchst Du eine solche Umleitung?

        Gruß, Cybaer

        --
        Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
        (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
        1. Und generell ist *keine* Umleitung wichtig!

          1. Es wurden bereits alle meine Fragen beantwortet (und dafür bin ich den Beitragenden sehr dankbar), also ist die Angelegenheit schon längst gegessen!

          2. > *keine* Umleitung wichtig < ... das ist ein Thema für einen separaten Thread... und gehört hier nicht her!

          Oder warum brauchst Du eine solche Umleitung?

          Mir ging's um's Prinzip, um andere Lösungsansätze... und die habe ich ja bereits erhalten!

          1. Hi,

            Mir ging's um's Prinzip, um andere Lösungsansätze... und die habe ich ja bereits erhalten!

            Dann beherzige das, womit sich die Frage nach "Umleitungsoptimierung" ja bereits erübrigt hat.

            Aber falls ich mir deinen Namen merken kann, werde ich dich zukünftig vorher um Erlaubnis fragen, falls ich mit dem Gedanken spielen sollte, meine Meinung zu äußern wollen! =:-)))))))

            Gruß, Cybaer

            --
            Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
            (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
            1. @@Cybaer:

              Aber falls ich mir deinen Namen merken kann,

              Das bezweifle ich ...

              werde ich dich zukünftig vorher um Erlaubnis fragen, falls ich mit dem Gedanken spielen sollte, meine Meinung zu äußern wollen! =:-)))))))

              ... meinen merkst du dir ja auch nicht. >;-)

              Live long and prosper,
              Gunnar

              --
              Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
              1. Hi Günther,

                ... meinen merkst du dir ja auch nicht. >;-)

                Lüge! >;-)

                Gruß, Cybaer

                --
                Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
                (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
          2. @@Patrick Ryba:

            1. Es wurden bereits alle meine Fragen beantwortet (und dafür bin ich den Beitragenden sehr dankbar), also ist die Angelegenheit schon längst gegessen!

            1. Niemals* bestimmt der OP hier, wann sich „sein“ Thread erledigt hat.

            1. *keine* Umleitung wichtig < ... das ist ein Thema für einen separaten Thread... und gehört hier nicht her!

            2. Niemals* bestimmt der OP hier, was alles in „seinem“ Thread diskutiert wird.

            Live long and prosper,
            Gunnar

            * Es sei denn, er ist Moderator.

            --
            Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
  4. Hi,

    eine HTML-Datei soll für mich erkennen, ob beim Client gerade JavaScript aktiviert ist oder nicht... und dann entsprechend eine Weiterleitung zur passenden Seite veranlassen...

    http://www.peterkroener.de/wie-findet-man-heraus-ob-der-nutzer-javascript-aktiviert-hat/

    SCNR ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. http://www.peterkroener.de/wie-findet-man-heraus-ob-der-nutzer-javascript-aktiviert-hat/

      Deine Variante ist länger und bewirkt doch eigentlich dasselbe wie mein EINZEILER, oder!?

      1. Hi,

        http://www.peterkroener.de/wie-findet-man-heraus-ob-der-nutzer-javascript-aktiviert-hat/

        Deine Variante ist länger und bewirkt doch eigentlich dasselbe wie mein EINZEILER, oder!?

        Wenn du ein bisschen drüber nachdenkst, sollte dir auffallen, dass das dort geschriebene ein Scherz ist ... (war zwar wohl von jemandem mal ernsthaft gemeint, ist aber natürlich blödsinnig.)

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. Hi,

          (war zwar wohl von jemandem mal ernsthaft gemeint, ist aber natürlich blödsinnig.)

          Zmindest ist der Eintrag getaggt unter "JavaScript, Spaß". :-))

          Gruß, Cybaer

          --
          Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
          (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)