Gerhard: Abfrage, ob Javascript aktiviert

Hallo, kann ich im CGI(Perl)-Programm abfragen, ob auf dem Client Javascript aktiviert ist?
Wenn ja, wie?
Danke
Gerhard

  1. Hallo Gerhard,

    Hallo, kann ich im CGI(Perl)-Programm abfragen, ob auf dem Client Javascript aktiviert ist?

    Du könntest prüfen, ob ein bestimmtes Bild, welches mit JS ins Dokument eingefügt wurde, geladen wird. Wenn dies nicht der Fall ist, ist JS wohl deaktiviert.

    Mit freundlichem Gruß
    Micha

  2. Hallo, kann ich im CGI(Perl)-Programm abfragen, ob auf dem Client Javascript aktiviert ist?

    Nur mit Perl allein wird das nix, denn während das Programm ausgeführt wird, ist kein Client im Spiel, der von sich aus irgendwelche Informationen liefert. Du könntest clientseitig via Javascript einen URL-Parameter mitschicken, der vom Script ausgewertet wird, z.B. "script.pl?js=ok" - Requests ohne URL-Parameter kommen von einem Client, der JS deaktiviert hat. Es gäbe auch noch andere Möglichkeiten (Anfordern dynamische Ressourcen, z.B. einer JS-Datei, die auf Anfrage vom Server geliefert wird, o.ä.), das kommt aber auf dein konkretes Problem an.

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    1. das kommt aber auf dein konkretes Problem an.

      Mit meinem Perl-Programm erstelle ich ein Kontaktformular und das Impressum mit e-mail-Adresse.
      Wenn Javascript deaktiviert ist, soll das Kontakformualr nicht erscheinen, sondern nur der Rest.

      1. Nichts einfacher als das. Lass das Formular mit JavaScript stehen oder fallen. Wenn das Formular-HTML mit JavaScript erstellt wird erscheint es wenn selbiges aktiviert ist, andernfalls nicht.

      2. Mit meinem Perl-Programm erstelle ich ein Kontaktformular und das Impressum mit e-mail-Adresse. Wenn Javascript deaktiviert ist, soll das Kontakformualr nicht erscheinen, sondern nur der Rest.

        Nach dem Sinn wage ich nicht zu fragen, würde es aber clientseitig lösen, also so, wie ich es beschrieben habe:

        JS-Funktion im Head:

        function JS_Param() {  
          var linkObj = document.getElementById('kontakt');  
          linkObj.src += '?js=1';  
        }
        

        HTML-Code:

        <body onload='JS_Param()'>  
        <!-- weiteres HTML -->  
        <a id='kontakt' href='./cgi-bin/kontakt.pl'>Kontaktformular</a>  
        <!-- weiteres HTML -->
        

        Perl-Code:

        use CGI;  
        my $cgi = CGI->new;  
        my $js_ok = 1 if($cgi->param('js') == 1);  
        if($js_ok) {  
          # gib Kontaktformular aus  
        }
        

        So in etwa.

        Siechfred

        --
        Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
  3. Moin,

    Hallo, kann ich im CGI(Perl)-Programm abfragen, ob auf dem Client Javascript aktiviert ist?
    Wenn ja,

    Ja.

    wie?

    Ich würde das mit AJAX machen, den Einstieg zu dieser Technik findest Du auf meiner Site.

    --roro

    1. Moin,

      also; eben getestet. Es ist zwar umständlich ^ 3, aber es tut wie folgt:

      das Script erzeugt ein Req-Object wie üblich über eine print-Anweisung:

      print qq(
       <script type="text/javascript">
        var req;
        function loadXMLDoc(url)
        {
          if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
            req.open("GET", url, true);
            req.send(null);
          } else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
            if (req) {
              req.open("GET", url, true);
              req.send();
            }
          }
        }

      loadXMLDoc("$ENV{SCRIPT_NAME}?js=1");

      </script>
      );

      und ruft damit dann per Javascript ein CGI-Script auf mit einem Parameter hintendran.

      Jedesmal, wenn das CGI aufgerufen wird, werden zwei Instanzen gestartet, eine davon stets mit dem Parameter 'js'.

      Da sich beide Instanzen untereinander überhaupt nicht kennen, muss sich der Programmierer was einfallen lassen, damit auch in der Hauptinstanz (die HTML-Code für den Besucher anzeigt) bekannt ist, wass die andere Instanz (die mit Parameter 'js') gerade gemacht hat.

      Da sich sowas, auf die Schnelle mal gedacht, lediglich über einen Timestamp mit minimaler Toleranz von einer Sekunde machen lässt, kann hierbei die Kommunikation schiefgehen (Race-Conditions, Timestamps stimmen nicht überein).

      Fazit: Lass den Quatsch.

      --roro

  4. Hi,

    Hallo, kann ich im CGI(Perl)-Programm abfragen, ob auf dem Client Javascript aktiviert ist?

    Nein.
    Du kannst allenfalls feststellen, ob vor dem Request Javascript aktiviert war.

    Ob Javascript noch aktiviert sein wird, wenn die Response des Perl-Scripts beim Client angekommen sein wird, kannst Du nicht feststellen.

    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.