1 votes

Dans Firefox, pourquoi cette page est-elle rendue de cette manière (le contenu de la balise Noscript est ignoré), lorsque vous utilisez NoScript ou uBlock Origin ?

J'ai une page

http://www.zen76171.zen.co.uk/aaa2.html

avec ce HTML

<!doctype html>
<html>
<head>
<noscript>aaa</noscript>
<script>document.write("bbb")</script>
</head>
<body>
ccc
</body>
</html>

Je comprends que le contenu de la balise noscript doit s'exécuter si un navigateur n'exécute pas le javascript.

Dans chrome ou firefox, sans aucune extension bloquant quoi que ce soit, j'obtiens le résultat de bbb ccc. C'est bien, ça a du sens. 'bbb' s'affiche parce que le javascript est autorisé, et ccc s'affiche parce qu'il s'affiche que le javascript soit activé ou non.

J'essaie ensuite d'installer NoScript dans Firefox https://addons.mozilla.org/en-GB/firefox/addon/noscript/

Maintenant, quand je recharge la page que j'ai mentionnée http://www.zen76171.zen.co.uk/aaa2.html

Il montre ccc . Cela m'indique que les scripts sont bloqués, donc cette partie est bonne.

Mais la sortie que j'attends est aaa ccc car je m'attendrais à ce que 'aaa' s'affiche lorsque scripts sont désactivés, et scripts sont désactivés.

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", je dois désinstaller et réinstaller Firefox pour supprimer NoScript. Mais pour l'instant, cela fera l'affaire lorsque je voudrai supprimer NoScript.

La question est la suivante : pourquoi le système affiche-t-il seulement "ccc" et non "aaa ccc" ?

ajouté

En fait, je n'obtiens que le "ccc" affiché avec "uBlock Origin". 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.

1voto

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X