11
votes

Vérifiez si JavaScript est activé

Y a-t-il un moyen de vérifier si JavaScript est activé ou pris en charge par le navigateur? Si ce n'est pas pris en charge, je voudrais rediriger l'utilisateur à une page d'erreur conviviale.

J'utilise JQuery et le cadre PHP Zend.


2 commentaires

Pour ce que cela vaut, je trouve toujours la création d'une seule page avec "Améliorations JavaScript" est une meilleure solution (et plus facile à entretenir) que deux versions, mais à chaque sa propre.


Merci d'avoir demandé à cela pour les futurs gens qui en ont besoin, comme moi


9 Réponses :


3
votes

Comme par défaut, envoyez la version sans JavaScript. Vous incluez un petit morceau de JavaScript qui redirige vers la version dynamique. Cela ne sera exécuté que lorsque JS est activé.


0 commentaires

2
votes

Vous pouvez créer une simple "page d'atterrissage" pour les utilisateurs sans JavaScript et ajouter une redirection JavaScript à la version de site compatible JavaScript.

quelque chose comme ceci: p>

...
<html>
...
<script type="text/javascript">
 window.location.replace("/hasjs");
</script>


0 commentaires

20
votes
<noscript><meta http-equiv="refresh" content="1;url=error.html"></noscript>
This will redirect to an error page if script is disabled.  Just replace error.html with the URL of your error page.

4 commentaires

IMHO Noscript ne peut être placé que dans le corps, mais méta juste dans la tête, donc un document contenant cela ne validera pas.


@MARC, je pense que vous êtes correct sur HTML 4, mais sous HTML 5 qui a changé. w3.org/tr/html5/scripting-1. HTML # The-Noscript-Element dit "dans un élément de tête, ... L'élément Noscript doit contenir uniquement lien , style , et méta éléments "donc noscript sont autorisés dans la tête et lorsque dans la tête la tête peut contenir méta éléments.


Pourquoi le délai de 1 seconde? Est-ce destiné à empêcher un flash laid de la page compatible JavaScript?


Cette méthode a fonctionné super pour moi. J'ai eu deux diapositives JS sur ma page principale et la page Alt n'était pas trop de problème. Alors je l'ai construit et ajouté ce truc et voilà! Beau conseil. +1



0
votes

Utilisez les balises


0 commentaires

4
votes

Si JavaScript est activé ou non est connu uniquement dans le contexte d'un navigateur, de sorte que le mieux que vous puissiez faire est d'écrire du code côté navigateur pour définir un drapeau sur la base de JavaScript si JavaScript est activé ou non. Une possibilité est de faire quelque chose comme xxx

et xxx


1 commentaires

Cela fonctionne mais seulement avec ceci:



6
votes

Encore une autre option, vous pouvez (bien qu'elle nécessite une visite de deuxième page) Utilisez JavaScript pour définir un cookie.

Si le cookie existe sur le côté serveur (ils ont JavaScript) rendent la page comme normale. Pendant l'absence du cookie, vous pouvez utiliser un emplacement rediriger ou rendre le modèle [dépouillé] approprié pour accueillir leur manque de support JavaScript.

page HTML < / p> xxx

page PHP xxx


0 commentaires

-1
votes

Apportez l'utilisateur à la page d'erreur par défaut et faites une exécution de redirection JavaScript dans la section de la page. Demandez à la redirection appuyer sur l'utilisateur à la page réelle.

S'ils n'ont pas activé JavaScript, ils ne seront pas redirigés et le reste de la page (page d'erreur) se chargera.


3 commentaires

Vous voulez donc que les utilisateurs soient potentiellement voir une page d'erreur avant que la Meta Redirect soit chargée?


Non, une partie de ma réponse a été mangée par Stackoverflow (j'ai écrit> la tête <). Placez la redirection dans la partie tête de la page, qui se chargera avant le corps. Si JavaScript est activé, le corps n'aura jamais une chance de charger.


Ah Ok, vous auriez dû mettre à jour votre réponse, mais je vais supprimer le bowvote. Modifier | Je ne peux supprimer que la bowvote une fois que votre réponse est modifiée.



1
votes

morceau de gâteau!

englobez toute votre page JavaScript dans une div. p>

superposez une seconde DIV de taille égale qui contient votre page non JavaScript. Donnez cette carte d'identité et un indice Z élevé: P>

document.getElementById.("hidejs").style.visibility = "hidden";


2 commentaires

Bon homme d'effort ... la page entière d'un fichier est bonne mais vraiment si elle nécessite une double duplication de toute la chose Stinkin ', je préfère avoir un fichier séparé, comme ci-dessus


Vous n'auriez pas besoin d'avoir un duplicata pour non-JS, vous pouvez simplement ajouter une classe qui se cache ou donne un style différent aux éléments qui s'appuient sur JS. JS supprimerait alors simplement cette classe sur la charge de la page. Tout est meilleur qu'une page Stinkin ', qui dit que vous n'êtes même pas autorisée à visiter l'autre page car vous n'avez pas activé JS.



-2
votes

oui. Faire vous avez la dernière jQuery.

JavaScript: xxx

php: xxx


2 commentaires

Y compris les bibliothèques "entières" jQuery sur votre page juste pour cette fonctionnalité est un peu "Over-Kill" Ne pensez-vous pas? C'est + 30K B uniquement pour celui-ci un petit test.


Je pense que vous voulez jeter un coup d'œil au code que vous avez posté à nouveau. Non seulement cela ne fonctionnerait-il pas, il existe également des erreurs de syntaxe. S'il vous plaît prenez soin de poster des réponses. Testez votre code et assurez-vous de la preuve de la lecture avant de soumettre :)