IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Comment prendre en compte le fait que JavaScript n'est pas activé


Sujet :

JavaScript

  1. #1
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut Comment prendre en compte le fait que JavaScript n'est pas activé
    Bonjour à tous !!

    Une petite question générale :

    Est-ce que aujourd'hui, cela vaut encore la peine de prendre en compte le fait qu'il n'y ait pas javascript ? (c'est à dire faut-il avoir une alternative complète (le plus possible) à une majorité de comportements ? par exemple en insérant partout des <noscript> ) ou on peut s'en passer parce que maintenant tout le monde l'a par défaut , et que juste afficher "ce site ne peut marcher que avec javascript activé" est OK ?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Les statistiques sur le sujet sont variables selon les sources, mais ce dont on est sûr, c'est que le pourcentage d'utilisateurs ayant JavaScript désactivé diminue depuis des années. Il semblerait que pour une cible moyenne, grand public, on soit en dessous de 1%.

    Une balise <noscript> est toujours une bonne idée, mais ne résout pas le problème de fond puisqu'on leur demande d'activer JavaScript.

    En fait, tout dépend du rôle qu'occupe JS dans le service web que tu souhaites fournir. S'il est nécessaire pour afficher le contenu (Single page App), il est important de fournir une solution sans JS pour récupérer un contenu de base. Pas seulement pour les utilisateurs mais aussi et surtout pour les robots d'indexation des moteurs de recherche et des outils de partage (comme quand tu copies un lien sur Facebook/Twitter).

    Cette version sans JS, les frameworks client commencent à en tenir compte et fournissent un mode SSR pour Server Side Rendering, qui consiste à faire exécuter le code JavaScript côté serveur et servir la page "prérendue" au client. Ca marche bien, mais ce n'est pas anodin à mettre en place et ça implique souvent un serveur Node.js.

    Le plus simple reste d'utiliser JS comme un agrément pour l'utilisateur, tout en ayant un site utilisable sans JS activé. Mais c'est aussi se priver de nombreux avantages que peut fournir JS dans les expériences web modernes.

    Bref pas de solution parfaite, alors que choisir ? Pour ma part, j'utilise sans complexe tout ce que permet de faire aujourd'hui JavaScript, à condition d'assurer un service minimum pour l'indexation. Ce qui se traduit par des balises meta bien complétées dans le <head> ainsi qu'un <noscript> dans le body décrivant brièvement le contenu de la page. Mon opinion est que JS occupe une place trop importante dans l'expérience web en 2016 pour qu'il soit justifiable d'investir du temps et de l'argent pour la poignée d'utilisateurs sans JS activé. Surtout lorsqu'ils ont fait ce choix pour de mauvaises raisons.

    Dernière chose, il y a une idée persistante selon laquelle les outils d'accessibilité tels que les lecteurs d'écrans ne savent pas gérer JS. Pour avoir bossé et discuté avec des utilisateurs de ces outils, je peux vous assurer que c'est faux. JS et accessibilité vont très bien ensemble.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Merci beaucoup de toutes ces infos

    Citation Envoyé par SylvainPV Voir le message
    Il semblerait que pour une cible moyenne, grand public, on soit en dessous de 1%.
    C'est le cas, c'est un site pour décrire mon activité..


    Citation Envoyé par SylvainPV Voir le message
    En fait, tout dépend du rôle qu'occupe JS dans le service web que tu souhaites fournir. S'il est nécessaire pour afficher le contenu (Single page App), il est important de fournir une solution sans JS pour récupérer un contenu de base. Pas seulement pour les utilisateurs mais aussi et surtout pour les robots d'indexation des moteurs de recherche et des outils de partage (comme quand tu copies un lien sur Facebook/Twitter).
    En fait il me sert de navigation presque essentiellement, afficher/cacher des div, et par exemple changer la langue et afficher la google maps en fonction de paramètres stockés, et afficher un code succès/erreur lors de l'envoi d'un message (plus une toute petite partie privée pour 2 utilisateurs seulement, mais qui eux je le sais ont toujours JS)

    Mon index.php contient tout le texte...

    Citation Envoyé par SylvainPV Voir le message
    Bref pas de solution parfaite, alors que choisir ? Pour ma part, j'utilise sans complexe tout ce que permet de faire aujourd'hui JavaScript, à condition d'assurer un service minimum pour l'indexation. Ce qui se traduit par des balises meta bien complétées dans le <head> ainsi qu'un <noscript> dans le body décrivant brièvement le contenu de la page.
    J'ai lu quelque part que c'etait une idée dépassée, et que maintenant la plupart des robots passaient au travers des scripts... Ce serait faux ?





    ** : par exemple, changer la classe d'un élément, je sais pas comment je pourrais faire ça en PHP.... Ni changer le contenu d'un champ... Je suis pas mal débutant c'est mon premier vrai site avec la techno d'aujourd'hui

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 415
    Par défaut
    Oui aujourd'hui ce n'est pas tant pour les visiteurs que l'on fait du contenu accessible avec javascript désactivé mais pour les robots. En résumé tout le contenu important que tu veux référencer doit être accessible sans js, le reste importe peu.

    Donc en fait les comportements javascript n'ont pas besoin d'avoir un équivalent fonctionnel point par point, l'essentiel est que tu aies un système de navigation qui soit fonctionnel sans js activé pour permettre l'accès à tout le contenu important qui doit être référencé.

  5. #5
    Membre expérimenté
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    J'ai lu quelque part que c'etait une idée dépassée, et que maintenant la plupart des robots passaient au travers des scripts... Ce serait faux ?
    Les affichages dynamiques en JS, les chargements de contenus en Ajax, sont bien compris par Google depuis l'année dernière. Pour les autres moteurs de recherche, c'est moins certain. On peut utiliser <noscript> pour ce à quoi il est prévu : afficher quelque chose à l'utilisateur final (et non à GoogleBot) en cas d'absence de JavaScript. On peut par exemple décider d'assurer via cette balise un minimum de navigation (un menu statique/CSS minimal), afin qu'il existe un chemin pour accéder à toutes les pages du site, non pas dans un but de référencement, mais en pensant aux vrais utilisateurs qui n'ont pas JS. Cela recoupe la problématique de l'accessibilité par les handicapés : de la même manière, il est bon, de temps en temps, de penser aux terminaux des aveugles lorsque la sémantique des balises est insuffisante. Cela dit, <noscript> n'est pas la seule manière de procéder. Pour ma part, j'opte plus souvent pour un menu statique/CSS minimal dans le code normal (à sa vraie place, pas dans <noscript>) que je change ensuite dynamiquement via JS.

    Le message habituel du type "<noscript>Veuillez activer JS</script>", personnellement je le trouve lourd. Les utilisateurs qui désactivent JS savent ce qu'ils font et pourquoi ils le font. Inutile de les polluer avec ça. Enfin à mon avis.

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    @Tahr: non vraiment, le JS et l'accessibilité sont des problématiques totalement différentes et les handicapés et aveugles ont autant JS activé que les utilisateurs classiques. C'est une fausse idée dont il faut définitivement se débarrasser. Au contraire, JS peut beaucoup aider sur certaines problématiques d'accessibilité comme la gestion du focus par exemple.

    http://a11yproject.com/posts/myth-sc...se-javascript/

    Les utilisateurs qui désactivent JS savent ce qu'ils font et pourquoi ils le font.

    Ça j'en doute. Les deux raisons principales évoquées lors des sondages sur ce sujet sont un sentiment de gain de sécurité et une manière d'économiser de la bande passante. Concernant la sécurité, je reprendrais cette très bonne citation de Igal Zeifman:
    Disabling JS to prevent XSS attacks is just as effective as starving yourself to avoid food poisoning. Will it work? Yes it will. Is it a good idea? No, probably not...

    Concernant la bande passante, c'est oublier tous les avantages fournis par les mécanismes de stockage local ainsi que le chargement en AJAX. Une fois le bundle JS téléchargé et mis en cache, le reste de la navigation consommera énormément moins de bande passante qu'un usage avec JS désactivé.

    Chaque fois que j'ai été confronté à ce débat, les arguments avancés par les anti-JS étaient complètement bidons. La dernière fois c'était un utilisateur de NoScript qui se prétendait "défendeur de la liberté sur Internet" et refusait "d'exécuter sur sa machine un code inconnu". J'imagine qu'il a lu tout le code source de son OS et de son navigateur avant de me répondre ça. C'est juste ridicule, ça me fait penser à ceux qui désactivent les services d'indexation et de prefetching de Windows parce que "l'ordi est plus rapide", puis qui crachent sur l'OS quand certaines fonctionnalités ne marchent plus.

  7. #7
    Membre expérimenté
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Par défaut
    Citation Envoyé par SylvainPV Voir le message
    Chaque fois que j'ai été confronté à ce débat, les arguments avancés par les anti-JS étaient complètement bidons.
    Ah OK, peut-être que les raisons sont de mauvaises raisons, il n'empêche qu'ils le font volontairement et donc il n'est très gentil de leur rappeler à chaque page qu'il faut activer JS.

    Sinon, pour ma part, depuis le Bénin, je navigue sur une 3G dont la qualité est variable. J'utilise le plugin YesScript notamment sur les forums (dont celui-ci) car c'est le moyen de désactiver l'éditeur qui est terriblement lent à charger. YesScript est le contraire de NoScript : une black-list. C'est vrai qu'avec JS les développeurs Web peuvent faire mieux que sans JS, y compris en terme de bande passante, mais en pratique il y a des sites qui deviennent plus faciles à naviguer si on leur coupe les scripts. Et j'apprécie notamment ce forum qui ne me colle pas sous le nez un méchant <noscript> culpabilisateur.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Pour re-répondre à vous :

    • tout le contenu intéressant (lecture ou indexation) est dans la page centrale... (donc, même sans navigation, les robots y ont accès)

    • Les appels à JS sont :

      • pour mettre la google map
      • pour mettre des champs d'un formulaire pré-rempli. (1)
      • pour afficher les codes d'erreurs/succès dans des popups modales (2)
      • pour ma navigation, qui se fait par des "onclicks" avec des changements de classe des boutons et en mettant des divs visibles ou pas.


    Je ne sais pas si je peux faire ça en PHP et/ou HTML pur...
    Les points 1 et 2 oui pas de problèmes,,

    Pour Google Maps je sais pas...
    Et pour la navigation, Je sais que je peux ajouter des href dans les <a> mais du coup comment je rendrais visible/invisible des divs ou changer la classe ??


    C'est la seule chose qui me reste à faire, mon site est fonctionnel entièrement




    PS: peut-on mettre des tests sur noscript en css ??

  9. #9
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Pour connaître le support de js en CSS, une astuce consiste à mettre une classe no-js sur le tag body puis de la supprimer en javascript. Si javascript n'est pas supporté, la classe restera la et pourra être utilisée dans le sélecteur css

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    OK merci à tous

    J'ai opté pour faire 2 index :

    • tester avec un test noscript qui dans la version avec js (par défaut) affiche un popup qui averti que l'expérience du site sera légèrement dégradée, et basculer sur la page sans js, mais j'ai réussi à faire tout le site équivalent, sauf pour une mise en page, les "target" fonctionnant au premier niveau, mais étant nettement plus compliquées à gérer aux 2ième et 3ième niveau de menus..

    • et dans la page nojs, j'ai un test script qui remercie d'avoir activé js et rebascule sur la version js..


    Donc merci et

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment prendre en compte le javascript désactivé
    Par donkeykick dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 25/01/2016, 10h15
  2. Réponses: 4
    Dernier message: 05/02/2011, 20h09
  3. Javascript n'est pas activé
    Par philippef dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/11/2010, 19h45
  4. si le javascript n'est pas activé dans le navigateur client
    Par yacine.dev dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/03/2010, 12h24
  5. [JpGraph] Erreur me disant que GD n'est pas activé
    Par rudylar dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 27/06/2008, 09h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo