J'ai trouvé de bons arguments contre :
-
L'élément noscript détecte uniquement si le navigateur a activé JavaScript ou non. Si JavaScript est désactivé dans le pare-feu plutôt que dans le navigateur, le JavaScript ne sera pas exécuté et le contenu de l'élément noscript ne sera pas affiché.
-
De nombreux scripts dépendent d'une ou plusieurs fonctionnalités spécifiques du langage pour pouvoir s'exécuter (par exemple document.getElementById). Lorsque les fonctionnalités requises ne sont pas prises en charge, le JavaScript ne peut pas être exécuté, mais comme le JavaScript lui-même est pris en charge, le contenu de noscript ne sera pas affiché.
-
L'endroit le plus utile pour utiliser l'élément noscript est l'en-tête de la page, où il peut déterminer de manière sélective les feuilles de style et les méta-éléments à appliquer à la page pendant son chargement, plutôt que d'avoir à attendre que la page soit chargée. Malheureusement, l'élément noscript n'est valable que dans le corps de la page et ne peut donc pas être utilisé dans l'en-tête.
-
L'élément noscript est un élément de niveau bloc et ne peut donc être utilisé que pour afficher des blocs entiers de contenu lorsque JavaScript est désactivé. Il ne peut pas être utilisé en ligne.
-
Idéalement, les pages web devraient utiliser HTML pour le contenu, CSS pour l'apparence et JavaScript pour le comportement. L'utilisation de l'élément noscript consiste à appliquer un comportement à partir du code HTML plutôt qu'à partir de JavaScript.
Source : http://javascript.about.com/od/reference/a/noscriptnomore.htm
Je suis tout à fait d'accord sur le dernier point. Existe-t-il un moyen de créer et d'ajouter un fichier externe <noscript>
fichier ? Devrions-nous placer <noscript>
en el <head>
?
6 votes
Existe-t-il encore des pare-feu qui désactivent javascript ? J'étais derrière un pare-feu il y a environ 13 ans, et c'était déjà terrible à l'époque. Je pense qu'une telle politique ne serait pas possible de nos jours, parce qu'environ un tiers du web ne serait plus utilisable
14 votes
<noscript> est autorisé dans l'en-tête selon la spécification la plus récente et, en pratique, il est pris en charge presque partout. developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript . De plus, la balise noscript peut être stylisée par CSS pour la rendre inline, tout comme n'importe quel élément de niveau bloc peut être stylisé pour changer son affichage en inline.
2 votes
La balise noscript peut très bien être utilisée dans l'en-tête de la page.
0 votes
Comme d'autres l'ont mentionné, <noscript> est autorisé dans <head> dans les dernières spécifications.
0 votes
J'ai dû choisir ce qu'il fallait faire pour un nouveau site web dans un temps limité, et j'ai donc opté pour l'utilisation de JavaScript, car il y a tellement de traitements qui semblent impossibles à réaliser uniquement en HTML et CSS. J'espère que tous les téléphones portables/appareils mobiles peuvent utiliser JavaScript.
0 votes
@David Le fait que vous deviez "espérer" indique pourquoi il s'agit d'une mauvaise pratique. A moins que vous ne fassiez quelque chose comme Google Docs, qui serait impossible sans JS, il est préférable d'écrire quelque chose qui se dégrade gracieusement et qui fonctionne toujours sur n'importe quel client conforme aux standards. En général, la meilleure façon d'y parvenir est de procéder à des améliorations progressives plutôt que de commencer par espérer que tout le monde supporte JS.
0 votes
Je dois "espérer", car la conformité aux normes n'est pas fiable d'un appareil à l'autre. Je n'ai aucune idée de la manière de programmer un site web en utilisant l'"amélioration progressive" et je ne souhaite pas apprendre à le faire. Pourquoi ? Parce que c'est l'enfer sur terre d'arriver à programmer une belle page web, même en utilisant B5 ! Tant que NOSCRIPT est un élément valide en HTML5, je ne vois aucune raison de ne pas l'utiliser de la manière dont il est habituellement utilisé : pour avertir l'utilisateur que JavaScript est nécessaire. Et tant qu'il n'y aura pas une meilleure façon de programmer toutes sortes de choses nécessaires pour une page web HTML/CSS ordinaire, je continuerai à avoir besoin de JavaScript.
0 votes
@DavidSpector Le fait que la conformité aux normes ne soit pas fiable est précisément la raison pour laquelle l'amélioration progressive est la solution la plus efficace. seulement une manière fiable de faire ce que vous évoquez sans s'appuyer sur l'espoir. L'amélioration progressive est ce qui la rend no l'enfer sur terre. Je ne sais pas pourquoi vous voulez rester dans l'ignorance de la solution exacte à votre problème, mais si vous voulez des informations, commencez ici : developer.mozilla.org/en-US/docs/Glossary/
0 votes
Un conseil également : en général, lorsque j'entends des gens se plaindre que le développement Web est un "enfer sur terre", c'est parce qu'ils n'ont pas bien compris les normes Web ou les concepts fondamentaux du fonctionnement du Web. Si vous prenez le temps d'apprendre ces deux choses, vous trouverez le développement Web très cohérent et logique.
0 votes
Je pense que je connais assez bien l'Internet, le Web et les principales normes. Pourtant, je trouve que le positionnement de chaque élément graphique implique de multiples niveaux d'expérimentation (la partie "Hell On Earth"), en particulier pour le langage CSS mal conçu. Je ne trouve pas non plus le développement du Web cohérent ou logique. Votre page de référence ne dit pratiquement rien, mais je suivrai ses liens quand j'en aurai le temps. Il n'y a pas de panacée.
0 votes
Le positionnement des éléments graphiques en HTML est généralement bien défini et simple. Si vous estimez qu'il vous faut deviner, peut-être devez-vous structurer votre mise en page différemment (indice : utilisez le modèle de la boîte pour positionner les objets en référence les uns aux autres, pas beaucoup de positionnement indépendant). Le CSS présente quelques lacunes et il est préférable de l'utiliser avec un préprocesseur tel que Sass. Il n'y a peut-être pas de panacée, mais il y en a. beaucoup des approches plus fiables que celles que vous semblez adopter.