Aktiviertes JavaScript mit PHP abfragen?
borisbaer
- javascript
- php
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
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
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.
@@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.
🖖 Живіть довго і процвітайте
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
ich zähle heise.de prinzipiell dazu ↩︎
@@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.
🖖 Живіть довго і процвітайте
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
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
@@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).
🖖 Живіть довго і процвітайте