La balise noscript a été mal utilisée, alors que l'extension du navigateur fonctionne correctement. En outre, il se peut que le résultat de la page soit mis en cache et qu'un rafraîchissement complet (rechargement avec annulation du cache) soit nécessaire.
Utilisation inappropriée
Mais la sortie que j'attendrais est 'aaa ccc', parce que je m'attendrais à ce que 'aaa' s'affiche lorsque scripts sont désactivés, et scripts sont désactivés.
Non, la sortie attendue 'aaa' ne sera pas affichée car la balise noscript n'a pas été utilisée correctement.
Balise HTML noscript sur W3schools fournit une explication concise de l'utilisation :
Définition et utilisation [...]
L'élément <noscript> peut être utilisé à la fois dans <head> et <body>.
Lorsqu'il est utilisé à l'intérieur de l'élément <head> : <noscript> doit contenir uniquement des éléments <link>, <style>, et <meta>.
Différences entre HTML 4.01 et HTML5
En HTML 4.01, la balise <noscript> ne peut être utilisée qu'à l'intérieur de l'élément <body>.
En HTML5, la balise <noscript> peut être utilisée à la fois à l'intérieur de <head> et de <body>.
En d'autres termes, la balise noscript utilisée par OP est valide sur la base de HTML5 mais cela ne suit pas la norme HTML . La balise noscript dans l'élément head du HTML ne devrait pas contiennent du "texte libre".
Résultat de la page
Il y a également un problème secondaire que je contourne, à savoir que si je désactive ou même "supprime" NoScript de Firefox, j'obtiens toujours la même réponse de "ccc" [...].
La plupart des navigateurs, y compris Firefox, utilisent le cache par défaut, ce qui nécessite probablement un rafraîchissement complet. Ce phénomène peut être facilement reproduit en permanence, à moins que l'utilisateur n'ait configuré différemment le comportement du cache.
Divergence 1 : Le rafraîchissement dur est effectué via un raccourci clavier, qui peut être soit . Ctrl + F5 o Ctrl + Shift + R pour Firefox. Dans le cas d'une extension de navigateur, l'effet mis en cache peut persister jusqu'à ce que le navigateur soit redémarré (l'expérience de l'utilisateur peut différer).
Si j'installe 'uBlock Origin', et que je choisis de laisser tel quel et de ne pas désactiver scripts, alors j'obtiens 'bbb ccc' (bien). Alors que si je clique pour désactiver scripts sur la page, alors j'obtiens 'ccc'. Le 'aaa' ne s'affiche pas.
La balise noscript qui contenait 'aaa' est probablement ignorée ou omise par les extensions, car l'utilisation de 'aaa' ne respecte pas la norme HTML. La balise noscript de l'élément HTML head ne doit contenir que les trois éléments mentionnés ci-dessus.
Divergence 2 : Le résultat de la page sera 'bbb ccc' également lors de l'affichage du fichier HTML localement dans Firefox, même lorsque uBlock Origin est activé et que l'option étendue "Désactiver JavaScript" est cochée. Cela est probablement dû à la permission limitée accordée aux extensions dans Firefox Quantum. En d'autres termes, l'extension du navigateur est incapable de bloquer script pour une page HTML locale affichée par l'intermédiaire de schéma URI du fichier (pas via localhost exécuté par un serveur web, ce qui est une autre question).
Essayez à nouveau
Considérons le contenu HTML modifié comme suit :
<!doctype html>
<html>
<head>
<noscript>aaa<style>#this {color:#cccccc;}</style></noscript>
<script>document.write("bbb")</script>
</head>
<body>
<noscript>nnn</noscript>
<span id="this">ccc</span>
</body>
</html>
Ensuite, chargez le HTML dans Firefox avec uBlock Origin et son option "Désactiver JavaScript" est décochée (OFF) ou est cochée (ON).
- Si "Désactiver JavaScript" est désactivé, le résultat sera "bbb ccc".
- Si "Disable JavaScript" est activé, le résultat sera "nnn ccc", où "nnn" est affiché à partir de la balise noscript de l'élément HTML body et "ccc" hérite de la couleur de la balise noscript de l'élément HTML head.
- Dans les deux cas, 'aaa' n'apparaîtra jamais comme expliqué précédemment (ne suit pas la norme).
Divergence 3 : Le 'aaa' ne sera visible que si JavaScript est désactivé dans le navigateur lui-même (configuration cachée de Firefox, about:config - "javascript.enabled" réglé sur "false"). Vous pouvez également utiliser un navigateur en mode texte pour obtenir un résultat similaire. C'est différent de l'option fournie par l'extension du navigateur, que Firefox Quantum avait limité par le design .
TL;DR Utilisez la balise noscript dans l'élément HTML body, pour rendre le texte visible lorsque script est désactivé. L'extension du navigateur fonctionne correctement selon la norme HTML, mais elle est limitée par sa conception.