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.

3voto

pouya Punkte 2772

Überprüfen Sie Cookies mithilfe einer reinen serverseitigen Lösung, die ich hier vorgestellt habe, überprüfen Sie dann auf JavaScript, indem Sie ein Cookie mit Jquery.Cookie setzen und überprüfen Sie dann auf diese Weise das Cookie, damit Sie sowohl Cookies als auch JavaScript überprüfen können.

3voto

Explosion Pills Punkte 182627

Sie erkennen nicht, ob der Benutzer JavaScript deaktiviert hat (serverseitig oder clientseitig). Stattdessen gehen Sie davon aus, dass JavaScript deaktiviert ist und bauen Ihre Webseite mit deaktiviertem JavaScript auf. Dies entfällt die Notwendigkeit von noscript, das Sie ohnehin vermeiden sollten, da es nicht ganz richtig funktioniert und unnötig ist.

Zum Beispiel bauen Sie Ihre Seite einfach so auf, dass

Diese Webseite funktioniert nicht ohne JS

Dann wird Ihr Skript einfach document.getElementById('nojs').style.display = 'none'; machen und mit seinem normalen JS-Geschäft fortfahren.

3voto

Jan Sahin Punkte 21

Um die Benutzer dazu zu zwingen, JavaScripts zu aktivieren, habe ich das 'href'-Attribut jedes Links auf dasselbe Dokument gesetzt, das den Benutzer darauf hinweist, JavaScripts zu aktivieren oder Firefox herunterzuladen (falls sie nicht wissen, wie man JavaScripts aktiviert). Ich habe die tatsächliche Link-URL im 'name'-Attribut der Links gespeichert und ein globales onclick-Ereignis definiert, das das 'name'-Attribut liest und die Seite dorthin umleitet.

Dies funktioniert gut für meine Benutzerbasis, auch wenn es ein wenig faschistisch ist ;).

3voto

Warum setzen Sie nicht einfach einen gehijackten onClick() Ereignishandler, der nur ausgelöst wird, wenn JS aktiviert ist, und verwenden Sie dies, um einen Parameter (js=true) an die angeklickte/aufgerufene URL anzuhängen (Sie könnten auch ein Dropdown-Menü erkennen und den Wert ändern oder ein verstecktes Formularfeld hinzufügen). Wenn der Server jetzt diesen Parameter sieht (js=true), weiß er, dass JS aktiviert ist, und kann dann Ihre ausgefeilte Logik serverseitig ausführen.
Der Nachteil dabei ist, dass Sie beim ersten Mal, wenn ein Benutzer Ihre Seite aufruft, als Lesezeichen speichert, über eine URL aufruft, die von einer Suchmaschine generiert wurde - erkennen müssen, dass es sich um einen neuen Benutzer handelt und daher nicht nach dem NVP in der URL suchen müssen, und der Server müsste auf den nächsten Klick warten, um festzustellen, ob der Benutzer JS aktiviert/deaktiviert hat. Ein weiterer Nachteil ist auch, dass die URL im Browser sichtbar wird und wenn dieser Benutzer dann diese URL als Lesezeichen speichert, den js=true NVP haben wird, auch wenn der Benutzer JS deaktiviert hat, obwohl der Server beim nächsten Klick klug genug wäre zu wissen, ob der Benutzer immer noch JS aktiviert hat oder nicht. Ach.. das macht Spaß...

2voto

birchy Punkte 479

Für diejenigen, die nur verfolgen möchten, ob js aktiviert wurde, wie wäre es, eine Ajax-Routine zu verwenden, um den Status zu speichern? Ich protokolliere zum Beispiel alle Besucher/Besuche in einer Gruppe von Tabellen. Das JSenabled-Feld kann standardmäßig auf FALSE gesetzt werden, und die Ajax-Routine würde es auf TRUE setzen, wenn JS aktiviert ist.

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