703 Stimmen

Wie erkennt man, ob JavaScript deaktiviert ist?

Es gab heute Morgen einen Beitrag, in dem gefragt wurde, wie viele Leute JavaScript deaktivieren. Dann fragte ich mich, welche Techniken verwendet werden könnten, um festzustellen, ob der Benutzer es deaktiviert hat.

Weiß jemand von einigen kurzen/einfachen Möglichkeiten, um festzustellen, ob JavaScript deaktiviert ist? Meine Absicht ist es, eine Warnung zu geben, dass die Website ohne aktiviertes JS nicht ordnungsgemäß funktionieren kann.

Letztendlich würde ich sie gerne zu Inhalten umleiten, die auch ohne JS funktionieren, aber ich benötige diese Erkennung als Platzhalter, um anzufangen.

0 Stimmen

Was möchtest du mit diesen Informationen tun? Es könnte die Antwort beeinflussen, die du bekommst - z.B. sollte in der Regel die progressive Verbesserung bevorzugt werden, anstatt zu versuchen, JavaScript-Deaktivierung zu erkennen und spezifische Maßnahmen basierend darauf zu ergreifen.

0 Stimmen

Progressive enhancement ist das, wonach ich suche. Ich möchte in der Lage sein, sie zu alternativem Inhalt umzuleiten, der ordnungsgemäß funktioniert, wenn kein JS-fähiger oder fähiger Browser vorhanden ist.

1 Stimmen

@expiredninja Dieser Beitrag von Nicholas Zakas besagt etwa 2%, obwohl er über ein Jahr alt ist.

13voto

rslite Punkte 77347

Sie können ein einfaches JS-Snippet verwenden, um den Wert eines versteckten Feldes festzulegen. Wenn zurück gesendet wird, wissen Sie, ob JS aktiviert war oder nicht.

Oder Sie können versuchen, ein Popup-Fenster zu öffnen, das Sie schnell schließen (das aber möglicherweise sichtbar ist).

Außerdem haben Sie das NOSCRIPT-Tag, das Sie verwenden können, um Text für Browser mit deaktiviertem JS anzuzeigen.

13voto

Brian Punkte 51

Weil ich dem Browser immer etwas Wertvolles zum Anzeigen geben möchte, benutze ich oft diesen Trick:

Zuerst wird jeder Teil einer Seite, der JavaScript benötigt, um ordnungsgemäß zu funktionieren (einschließlich passiver HTML-Elemente, die durch getElementById-Aufrufe usw. modifiziert werden), so entworfen, dass er auch ohne JavaScript verwendet werden kann (entworfen, als ob es nicht existiert).

Alle Elemente, die JavaScript erfordern würden, platziere ich innerhalb eines Tags so ähnlich wie:

Dann verwende ich am Anfang meines Dokuments .onload oder document.ready innerhalb einer Schleife von getElementsByName('jsOnly'), um .style.display = ""; zu setzen und die vom JS abhängigen Elemente wieder einzuschalten. Auf diese Weise müssen Nicht-JS-Browser niemals die JS-abhängigen Teile der Website sehen, und wenn sie es haben, erscheint es sofort, wenn es bereit ist.

Wenn Sie sich an diese Methode gewöhnt haben, ist es ziemlich einfach, Ihren Code hybridisieren, um beide Situationen zu handhaben, obwohl ich derzeit nur mit dem noscript Tag experimentiere und erwarte, dass er einige zusätzliche Vorteile bietet.

12voto

the_seeker_who Punkte 61

Fügen Sie dies zum HEAD-Tag jeder Seite hinzu.

Also hast du:

Mit Dank an Jay.

12voto

David Wees Punkte 288

Das noscript-Tag funktioniert gut, erfordert jedoch bei jeder zusätzlichen Seitenanfrage weiterhin das Bereitstellen nutzloser JS-Dateien, da noscript im Grunde genommen eine clientseitige Überprüfung ist.

Sie könnten ein Cookie mit JS setzen, aber wie jemand anderes angemerkt hat, könnte dies fehlschlagen. Idealerweise möchten Sie in der Lage sein, clientseitig JS zu erkennen und ohne Verwendung von Cookies eine Sitzung serverseitig für diesen Benutzer einzurichten, die anzeigt, ob JS aktiviert ist.

Eine Möglichkeit besteht darin, ein 1x1-Bild mit JavaScript dynamisch hinzuzufügen, bei dem das src-Attribut tatsächlich ein serverseitiges Skript ist. Dieses Skript speichert lediglich in der aktuellen Benutzersitzung ab, dass JS aktiviert ist ($_SESSION['js_enabled']). Anschließend können Sie dem Browser ein 1x1 leeres Bild ausgeben. Das Skript wird nicht für Benutzer ausgeführt, die JS deaktiviert haben, und daher wird $_SESSION['js_enabled'] nicht gesetzt. Dann können Sie für weitere Seiten, die diesem Benutzer bereitgestellt werden, entscheiden, ob Sie alle externen JS-Dateien einbeziehen möchten. Sie möchten jedoch immer die Überprüfung einbeziehen, da einige Ihrer Benutzer möglicherweise das NoScript Firefox-Add-On verwenden oder JS aus einem anderen Grund vorübergehend deaktiviert haben.

Sie möchten diese Überprüfung wahrscheinlich gegen Ende Ihrer Seite einfügen, damit die zusätzliche HTTP-Anfrage das Rendern Ihrer Seite nicht verlangsamt.

11voto

Umesh Patil Punkte 10019

Eine häufige Lösung besteht darin, das Meta-Tag in Verbindung mit noscript zu nutzen, um die Seite neu zu laden und den Server zu informieren, wenn JavaScript deaktiviert ist, wie folgt:

In dem obigen Beispiel wird der Browser, wenn JavaScript deaktiviert ist, in 0 Sekunden zur Startseite der Website umgeleitet. Zusätzlich wird auch der Parameter javascript=false an den Server gesendet.

Ein Server-seitiges Skript wie node.js oder PHP kann dann den Parameter analysieren und herausfinden, dass JavaScript deaktiviert ist. Es kann dann eine spezielle nicht-JavaScript-Version der Website an den Client senden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X