borisbaer: Aktiviertes JavaScript mit PHP abfragen?

Hallo zusammen,

ich habe mir schon des Öfteren gewünscht, dass ich in meinem PHP-Code abfragen kann, ob JavaScript aktiviert ist oder nicht. Es gibt da ja einige Workarounds (normalerweise über das Setzen eines Cookies). Ich wollte mal nachfragen, ob so etwas als Bad Practice gilt oder ob das eine gangbare Möglichkeit darstellt.

Vielen Dank und Grüße
Boris

  1. Moin Boris,

    du kannst mit JavaScript z.B. einen separaten URL-Parameter an den Querystring hängen, der dann mit PHP abgefragt wird, oder einen XHR zu einer Session absetzen.

    Viele Grüße
    Robert

  2. Hi Boris, dafür gibt es mehrere Möglichkeiten. Eine davon währe ein Request an PHP zu schicken wenn JavaScript aktiviert wurde.

    Es ist aber unüblich JavaScript zu deaktivieren, da über 90% aller Webseiten ohne JavaScript garnicht oder nur sehr eingeschränkt funktionieren. Zwar steht es jedem Frei JavaScdript zu deaktivieren, aber es hat meist kein großen Vorteil. Und falls man Seiten besuchen sollte wo eine Gefahr besteht das über JavaScript eine Gefahr besteht, dann frage ich mich wozu man solche Seiten aufrufen sollte.

    1. Hallo Hörnchen,

      es geht mir beim Abschalten von Javascipt nicht um die eigentliche Seite, sonder um die JS, die von dritten Seiten geladen werden.
      Hier mal ein Beispiel, die Seite funktioniert wunderbar ohne das ganze Geraffel:

      Fred

      --
      I � Unicode
    2. @@Hörnchen

      Es ist aber unüblich JavaScript zu deaktivieren

      Das mag zwar stimmen …, aber es gibt andere Gründe, warum JavaScript nicht ausgeführt wird.

      🖖 Живіть довго і процвітайте

      --
      „Ukončete, prosím, výstup a nástup, dveře se zavírají.“
    3. Hallo

      Es ist aber unüblich JavaScript zu deaktivieren, da über 90% aller Webseiten ohne JavaScript garnicht oder nur sehr eingeschränkt funktionieren.

      Nun könnte man über die Prozentzahl streiten, aber …

      Zwar steht es jedem Frei JavaScdript zu deaktivieren, aber es hat meist kein großen Vorteil. Und falls man Seiten besuchen sollte wo eine Gefahr besteht das über JavaScript eine Gefahr besteht, dann frage ich mich wozu man solche Seiten aufrufen sollte.

      … das hier ist das viel relevantere Argument. Denn mit der Ansage „falls man Seiten besuchen sollte wo eine Gefahr besteht das über JavaScript eine Gefahr besteht, dann frage ich mich wozu man solche Seiten aufrufen sollte“ sind, bei Benutzung obiger Prozentzahl, auf einmal etwa 90% des Webs gefährlich.

      Der Screenshot in Freds Posting zeigt, was selbst als seriös geltende Angebote [1] aus fremdem Quellen laden. Das sind in Hinsicht auf den schützenden Umgang mit persönlichen Daten und auf möglicherweise unerkannt verbreitete Schadsoftware keineswegs alles ungefährliche Skripte.

      Von Übertragungsproblemen, die dafür sorgen, dass nicht alle der verlinkten Skriptquellen geladen werden können, was wiederum dafür sorgt, dass einige oder alle der doch vorhandenen Skripte nicht laufen, gar nicht erst zu beginnen.

      Dagegen hilft aber auch keine Prüfung, ob JS überhaupt aktiviert ist. Denn ein JS-Prüfskript könnte per Ajax/Fetch an den Server sein Funktionieren melden und dennoch könnten andere Skripte wegen gewollter Deaktivierung einzelner Skriptquellen oder Übertragungsschwierigkeiten eben nicht funktionieren.

      An der Stelle kommt Gunnars Frage, was Boris überhaupt erreichen will, ins Spiel. Boris könnte ja auch einen Irrweg beschreiten, worauf man ihn hinweisen möchte.

      Tschö, Auge

      --
      „Habe ich mir das nur eingebildet, oder kann der kleine Hund wirklich sprechen?“ fragte Schnapper. „Er behauptet, nicht dazu imstande zu sein“ erwiderte Victor. Schnapper zögerte (…) „Nun …“ sagte er schließlich, „ich schätze, er muss es am besten wissen.“ Terry Prattchett, Voll im Bilde

      1. ich zähle heise.de prinzipiell dazu ↩︎

  3. @@borisbaer

    ich habe mir schon des Öfteren gewünscht, dass ich in meinem PHP-Code abfragen kann, ob JavaScript aktiviert ist oder nicht.

    Kannst du mal eins, zwei Anwendungsfälle nennen, wo du dir das gewünscht hast? Möglicherweise ist dein Wunsch nicht die beste Lösung für das Problem.

    🖖 Живіть довго і процвітайте

    --
    „Ukončete, prosím, výstup a nástup, dveře se zavírají.“
    1. Hallo Gunnar,

      vor allem geht es bei mir darum, bestimmte HTML-Elemente nur dann zu laden, wenn auch JS aktiviert ist. Zum Beispiel Buttons, die irgendeine JS-Funktion abrufen. Ein konkretes Beispiel wäre das Anzeigen eines dialog-Fensters mit JS. Wenn kein JS aktiviert ist, würde ich statt des Buttons eher einen Link einfügen.

      Natürlich kann ich auch JS diese Aufgabe übernehmen lassen in dem Sinne, dass es den Link entfernt und stattdessen einen Button einfügt. Das führt aber in der Regel zu einem unschönen Nachladen, das kurzzeitig für den Benutzer aufblitzt und daher auch wahrnehmbar ist.

      Grüße
      Boris

      1. Hallo

        vor allem geht es bei mir darum, bestimmte HTML-Elemente nur dann zu laden, wenn auch JS aktiviert ist. Zum Beispiel Buttons, die irgendeine JS-Funktion abrufen.

        Natürlich kann ich auch JS diese Aufgabe übernehmen lassen in dem Sinne, dass es den Link entfernt und stattdessen einen Button einfügt. Das führt aber in der Regel zu einem unschönen Nachladen, das kurzzeitig für den Benutzer aufblitzt und daher auch wahrnehmbar ist.

        Das ist aber der saubere Weg. Füge Elemente, die nur mit JS funktionieren, auch mit JS ins Dokument ein. Das gilt für Buttons aber auch für Dialoge. Die kannst du übrigens, vor dem DOM verborgen, in einem, dem Dokument beigefügten Template ausliefern und per JS, aber eben nur per JS, ins DOM hieven und anzeigen.

        Tschö, Auge

        --
        „Habe ich mir das nur eingebildet, oder kann der kleine Hund wirklich sprechen?“ fragte Schnapper. „Er behauptet, nicht dazu imstande zu sein“ erwiderte Victor. Schnapper zögerte (…) „Nun …“ sagte er schließlich, „ich schätze, er muss es am besten wissen.“ Terry Prattchett, Voll im Bilde
        1. @@Auge

          Füge Elemente, die nur mit JS funktionieren, auch mit JS ins Dokument ein.

          Performanter und auch in der Implementierung einfacher: Füge Elemente, die nur mit JS funktionieren, mit HTML ins Dokument ein, aber mache sie erst mit JS sichtbar.

          Also bspw. <button hidden=""> mit buttonElement.hidden = false;.

          Man könnte nun in Versuchung kommen, die anderen Elemente in noscript zu tun. Sehr gewagt! Dann wären sie nicht sichbar, wenn JavaScript aktiviert ist, unabhängig davon, ob das betreffende JavaScript auch geladen und ausgeführt wird. Wenn’s blöd läuft, ist weder das eine noch das andere zu sehen. Ergo muss JavaScript die Sichtbarkeit regeln.

          Beispiel

          Mit CSS wird dort dafür gesorgt, dass die versteckten Elemente dennoch ihren Platz beanspruchen (versteckt per visibility: hidden, nicht per display: none) und dass sie denselben Platz beanspruchen (in derselben Gridzelle liegen).

          🖖 Живіть довго і процвітайте

          --
          „Ukončete, prosím, výstup a nástup, dveře se zavírají.“