0815hannes: Prüfen ob Java Script aktiviert ist

Hallo miteinander,

ich stehe vor einem kleinen Problem. Wie im Titel erwähnt, möchte ich überprüfen ob der Benutzer im Browser Java Script aktiviert hat. Dies möchte ich nicht nur an einer Stelle der Website machen sondern, jedesmal wenn auf einen Link geklickt wird oder ein Formular abgeschickt wird.

Meine Vorstellung wär so.
1. User schickt Link / Formular ab.
2. Java Script schreibt in GET bzw. POST eine Variable "js" hinzu
3. PHP prüft ob Variable da ist und wenn nicht ist JavaScript nicht aktiv und kann dementsprechend reagieren

Gibt es eine Möglichkeit, grundsätzlich einen GET bzw. POST abzufangen, bevor er an den Server geschickt wird, ohne alle Forms anpassen zu müssen?

Vielen Dank für Eure Antworten.

  1. Die einfachste Möglichkeit besteht wahrscheinlich in der Verwendung eines Cookies. Setze es, wenn nicht vorhanden, serverseitig auf false, JS-seitig auf true und werte es dann wieder serverseitig aus.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.
    1. Das ist eine sehr gute Idee. Ich werds gleich mal ausprobieren.

      Vielen Dank :-)

    2. Die einfachste Möglichkeit besteht wahrscheinlich in der Verwendung eines Cookies. Setze es, wenn nicht vorhanden, serverseitig auf false, JS-seitig auf true und werte es dann wieder serverseitig aus.

      Aber es ist doch möglich, zwar JavaScript aktiviert zu haben, Cookies aber nicht zu erlauben.

      Du könntest auch mit Ajax arbeiten, falls das deinem Problem weiterhilft. Mir ist nicht ganz klar, wann genau, du wissen willst, ob jemand JS aktiviert hat.

      1. 'ǝɯɐu$ ıɥ

        Die einfachste Möglichkeit besteht wahrscheinlich in der Verwendung eines Cookies. Setze es, wenn nicht vorhanden, serverseitig auf false, JS-seitig auf true und werte es dann wieder serverseitig aus.

        Aber es ist doch möglich, zwar JavaScript aktiviert zu haben, Cookies aber nicht zu erlauben.

        Das entspricht /meiner/ Einstellung.

        Du könntest auch mit Ajax arbeiten, falls das deinem Problem weiterhilft. Mir ist nicht ganz klar, wann genau, du wissen willst, ob jemand JS aktiviert hat.

        Raketen -> Amöben?  Einfach einen Link per dokument.write den anderen im noscript Bereich, fertig.

        ssnɹƃ
        ʍopɐɥs

        --
        Answers: $1, Short: $5, Correct: $25, dumb looks are still free ...
      2. Du könntest auch mit Ajax arbeiten, falls das deinem Problem weiterhilft. Mir ist nicht ganz klar, wann genau, du wissen willst, ob jemand JS aktiviert hat.

        Der Betrieb der Seite ist ohne JavaScript nicht oder nur stark eingeschränkt möglich. Da auch Feldprüfungen über JavaScript laufen, muss quasi bei jedem Request überprüft werden, ob der Benutzer inzwischen JavaScript deaktiviert hat (unwahrscheinlich aber möglich).

        Aber es ist doch möglich, zwar JavaScript aktiviert zu haben, Cookies aber nicht zu erlauben.

        Bei dieser Lösung wäre dann auch Voraussetzung, dass Cookies immer aktiviert sind.

        1. Hi!

          Der Betrieb der Seite ist ohne JavaScript nicht oder nur stark eingeschränkt möglich. Da auch Feldprüfungen über JavaScript laufen, muss quasi bei jedem Request überprüft werden, ob der Benutzer inzwischen JavaScript deaktiviert hat (unwahrscheinlich aber möglich).

          Du musst sowieso serverseitig damit rechnen, dass kein Javascript eine Prüfung vorgenommen hat, und alle Prüfungen dort (noch einmal) ausführen. Insofern kann es eigentlich auch egal sein, ob der Anwender Javascript aktiviert hat oder nicht. Werteprüfungen können jedenfalls kein relevantes Kriterium für eine zwingende Voraussetzung sein.

          Lo!

  2. Hi!

    Wie im Titel erwähnt, möchte ich überprüfen ob der Benutzer im Browser Java Script aktiviert hat.

    Kennst du <script> und <noscript>?

    Gibt es eine Möglichkeit, grundsätzlich einen GET bzw. POST abzufangen, bevor er an den Server geschickt wird, ohne alle Forms anpassen zu müssen?

    Wenn sich Event-Bubbling auch auf onsubmit von Formularen auswirkt, dann ja, sonst wohl eher nicht.

    Lo!

    1. Hallo,

      Gibt es eine Möglichkeit, grundsätzlich einen GET bzw. POST abzufangen, bevor er an den Server geschickt wird, ohne alle Forms anpassen zu müssen?
      Wenn sich Event-Bubbling auch auf onsubmit von Formularen auswirkt, dann ja, sonst wohl eher nicht.

      oder doch? Man kann ja auch über document.forms[] iterieren und so allen Formularen einen onsubmit-Handler verpassen. Die Frage ist, ob der Mechanismus für Links, die ja einen GET-Request auslösen, auch gelten soll. Falls ja, in entsprechender Weise über document.links[] iterieren und deren href- und/oder search-Eigenschaft untersuchen, ggf. manipulieren.

      Mir ist aber auch noch unklar, wozu die ganze Aktion gut sein soll.

      Ciao,
       Martin

      --
      Man sollte keinen Senf von sich geben, wenn man nicht auch das Würstchen dazu liefern kann.
      1. Hi!

        Man kann ja auch über document.forms[] iterieren und so allen Formularen einen onsubmit-Handler verpassen.

        Naja, das ist die Methode "alle Forms anpassen", nur eben automatisch.

        Lo!

      2. »» oder doch? Man kann ja auch über document.forms[] iterieren und so allen Formularen einen onsubmit-Handler verpassen. Die Frage ist, ob der Mechanismus für Links, die ja einen GET-Request auslösen, auch gelten soll. Falls ja, in entsprechender Weise über document.links[] iterieren und deren href- und/oder search-Eigenschaft untersuchen, ggf. manipulieren.

        Ich hab das mal versucht umzusetzen. Ich würde jeder Form einfach automatisiert ein hidden field mitgeben. Aber an irgendwas scheitert es.

        function change_forms() {
        var formulare = document.getElementsByTagName("form");
        var laenge = formulare.length;
        for(var i = 0; i < laenge; ++i) {
                var myInput2 = document.createElement("input");
        myInput2.setAttribute("type","hidden");
        myInput2.setAttribute("name", "brutal");
        myInput2.setAttribute("value","1");
        formulare[i].appendChild(myInput2);
        }
        }

        Das ganze wird mittels "onload" im body ausgeführt. Vielleicht hat jmd ne idee warums nicht funktioniert.

        Danke Euch.

        1. Ich hab das mal versucht umzusetzen. Ich würde jeder Form einfach automatisiert ein hidden field mitgeben. Aber an irgendwas scheitert es.

          Wieso?

          function change_forms() {
          var formulare = document.getElementsByTagName("form");
          var laenge = formulare.length;
          myInput2.setAttribute("type","hidden");
          myInput2.setAttribute("name", "brutal");
          myInput2.setAttribute("value","1");

          Statt setAttribute(), würde ich obj.attribute = ''; verwenden.

          Das ganze wird mittels "onload" im body ausgeführt. Vielleicht hat jmd ne idee warums nicht funktioniert.

          Wie kommst du darauf, dass das nicht funktioniert?

          Struppi.

          1. Wie kommst du darauf, dass das nicht funktioniert?

            Also natürlich funktioniert onload und die Funktion wird auch ausgeführt und durchläuft alle Forms, aber es werden noch keine hidden Felder geschrieben.

            1. Wie kommst du darauf, dass das nicht funktioniert?
              Also natürlich funktioniert onload und die Funktion wird auch ausgeführt und durchläuft alle Forms, aber es werden noch keine hidden Felder geschrieben.

              Dein code den du uns gezeigt hast tut das. Wie hast du festgestellt das es nicht so ist?

              Struppi.

              1. Dein code den du uns gezeigt hast tut das. Wie hast du festgestellt das es nicht so ist?

                Es funktioniert tatsächlich. Hatte noch nen kleinen Fehler drin. Jetzt noch die Links anpassen, dann funktioniert das für die ganze Seite.

                Vielen Dank euch allen

                1. Die Funktion leistet ihre Arbeit, ist allerdings extrem Perfomance lastig. :-(
                  Ich glaube ich brauche einen gänzlich anderen Ansatz.

                  Habt ihr noch Ideen, wie man bei jedem gesendeten Request feststellen kann, dass javascript aktiviert ist?

                  Gibt es nicht irgendein Standardvorgehen?

                  1. 'ǝɯɐu$ ıɥ

                    Die Funktion leistet ihre Arbeit, ist allerdings extrem Perfomance lastig. :-(
                    Ich glaube ich brauche einen gänzlich anderen Ansatz.

                    Habt ihr noch Ideen, wie man bei jedem gesendeten Request feststellen kann, dass javascript aktiviert ist?

                    Gibt es nicht irgendein Standardvorgehen?

                    hau ein hidden field per document.write rein, wird der wert übermittelt war javascript aktiviert.

                    ssnɹƃ
                    ʍopɐɥs

                    --
                    Answers: $1, Short: $5, Correct: $25, dumb looks are still free ...
                  2. Hi!

                    Habt ihr noch Ideen, wie man bei jedem gesendeten Request feststellen kann, dass javascript aktiviert ist?

                    Gar nicht. Egal, was du dir ausdenkst, ein Requests kann genausogut zu Fuß auf diese Weise zusammengebaut worden sein.

                    Gibt es nicht irgendein Standardvorgehen?

                    Ja, Javascript als optionalen Bestandteil ansehen und ansonsten weder darauf bauen, dass es aktiviert ist noch dass es intentionsgemäß ausgeführt wurde.

                    Lo!