_roro: Abfrage, ob Javascript aktiviert

Beitrag lesen

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