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. p>
J'utilise JQuery et le cadre PHP Zend. P>
9 Réponses :
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é. P>
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>
<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.
IMHO Noscript code> ne peut être placé que dans le corps, mais
méta code> 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 code>,
style code >, et
méta code> éléments "donc
noscript code> sont autorisés dans la tête code> code> et lorsque dans la tête
méta code> é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
Utilisez les balises
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 et p>
Cela fonctionne mais seulement avec ceci:
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 page HTML < / p> page PHP p> code> rediriger ou rendre le modèle [dépouillé] approprié pour accueillir leur manque de support JavaScript. P>
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. P>
S'ils n'ont pas activé JavaScript, ils ne seront pas redirigés et le reste de la page (page d'erreur) se chargera. p>
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.
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";
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.
oui. Faire vous avez la dernière jQuery.
JavaScript: p> php: p>
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 :)
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