tengo una pagina
http://www.zen76171.zen.co.uk/aaa2.html
con este HTML
<!doctype html>
<html>
<head>
<noscript>aaa</noscript>
<script>document.write("bbb")</script>
</head>
<body>
ccc
</body>
</html>
Entiendo que el contenido de la etiqueta noscript debe ejecutarse si un navegador no ejecuta javascript.
En Chrome o Firefox, sin extensiones que bloqueen nada, obtengo el resultado de bbb ccc. Está bien, tiene sentido. 'bbb' se muestra porque se permite javascript y ccc se muestra porque mostrará si javascript está habilitado o no.
Luego intento instalar NoScript en Firefox https://addons.mozilla.org/en-GB/firefox/addon/noscript/
Ahora cuando recargo la página que mencionéhttp://www.zen76171.zen.co.uk/aaa2.html
Muestra ccc
. Eso me indica que se están bloqueando scripts, así que esa parte está bien.
Pero el resultado que esperaría es aaa ccc
, porque esperaría que se mostrara 'aaa' cuando los scripts estén deshabilitados y los scripts estén deshabilitados.
También hay un problema secundario que soluciono, que es que si desactivo o incluso "elimino" NoScript de Firefox, sigo recibiendo la misma respuesta de "ccc", tengo que desinstalar y reinstalar Firefox para eliminar NoScript. Pero por ahora eso servirá cuando quiera eliminar NoScript.
Esta pregunta es: ¿por qué muestra solo 'ccc' y no 'aaa ccc'?
agregado
De hecho, solo aparece el 'ccc' que se muestra con 'uBlock Origin'. Si instalo 'uBlock Origin' y selecciono dejarlo como está para no desactivar los scripts, obtengo 'bbb ccc' (bien). Mientras que si hago clic para desactivar los scripts en la página, aparece 'ccc'. El 'aaa' no se muestra.
Respuesta1
La etiqueta noscript se utilizó incorrectamente, mientras que la extensión del navegador funciona correctamente. Además de eso, el resultado de la página puede estar almacenado en caché y, por lo tanto, es probable que sea necesaria una actualización completa (recargar con anulación de caché).
Uso inapropiado
Pero el resultado que esperaría es 'aaa ccc', porque esperaría que se mostrara 'aaa' cuando los scripts estén deshabilitados y los scripts estén deshabilitados.
No, el resultado esperado 'aaa' no se mostrará porque la etiqueta noscript se usó incorrectamente.
Etiqueta HTML noscript en W3schoolsproporciona una explicación concisa para el uso:
Definición y uso[...]
El elemento <noscript> se puede utilizar tanto en <head> como en <body>.
Cuando se usa dentro del elemento <head>: <noscript> debe contener solo los elementos <link>, <style> y <meta>.
Diferencias entre HTML 4.01 y HTML5
En HTML 4.01, la etiqueta <noscript> sólo se puede utilizar dentro del elemento <body>.
En HTML5, la etiqueta <noscript> se puede usar tanto dentro de <head> como de <body>.
En otras palabras, la etiqueta noscript utilizada por OP es válida según HTML5 pero no sigueel estándar HTML. La etiqueta noscript en el elemento principal HTMLno debecontener cualquier "texto libre".
Resultado de la página
También hay un problema secundario que soluciono, que es que si desactivo o incluso "elimino" NoScript de Firefox, sigo recibiendo la misma respuesta de "ccc" [...]
La mayoría de los navegadores, incluido Firefox, utilizan la memoria caché de forma predeterminada, por lo que es probable que sea necesario realizar una actualización completa. Esto se puede reproducir fácilmente todo el tiempo, a menos que el usuario haya configurado el comportamiento de la caché de manera diferente.
Discrepancia 1: La actualización completa se realiza mediante un método abreviado de teclado, que puede ser Ctrl+ F5o Ctrl+ Shift+ Rpara Firefox. En caso de extensión del navegador, el efecto de caché puede persistir hasta que se reinicie el navegador nuevamente (la experiencia del usuario puede diferir).
Si instalo 'uBlock Origin' y selecciono dejarlo como está para no desactivar los scripts, obtengo 'bbb ccc' (bien). Mientras que si hago clic para desactivar los scripts en la página, aparece 'ccc'. El 'aaa' no se muestra.
La etiqueta noscript que contenía 'aaa' probablemente esté siendo ignorada u omitida por las extensiones, porque el uso de 'aaa' no sigue el estándar HTML. La etiqueta noscript en el elemento head HTML debe contener solo los tres elementos como se indicó anteriormente.
discrepancia 2: El resultado de la página será 'bbb ccc' también cuando se visualice el archivo HTML localmente en Firefox, incluso cuando uBlock Origin esté habilitado y la opción extendida "Desactivar JavaScript" esté marcada. Es probable que esto se deba al permiso limitado otorgado a las extensiones en Firefox Quantum. En otras palabras, la extensión del navegador no puede bloquear el script de una página HTML local que se muestra a través deesquema de URI de archivo(no a través de localhost ejecutado por un servidor web, que es otro asunto diferente).
Intentar otra vez
Considere el contenido HTML modificado de la siguiente manera:
<!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>
Luego carga el HTML en Firefox con uBlock Origin y su opción "Desactivar JavaScript" está desmarcada (OFF) o está marcada (ON).
- Si "Desactivar JavaScript" está desactivado, el resultado será 'bbb ccc'
- Si "Desactivar JavaScript" está activado, el resultado será 'nnn ccc', donde 'nnn' se muestra desde la etiqueta noscript en el elemento del cuerpo HTML y 'ccc' hereda el color de la etiqueta noscript en el elemento principal HTML.
- En ambos casos, 'aaa' nunca aparecerá como se explicó anteriormente (no sigue el estándar)
Discrepancia 3: El 'aaa' será visible solo si JavaScript está deshabilitado dentro del propio navegador (configuración oculta de Firefox, about:config - "javascript.enabled" establecido en "false"). Alternativamente, utilice cualquier navegador de sólo texto para ver resultados similares. Esto es diferente de la opción proporcionada por la extensión del navegador, que Firefox Quantum tenía limitada.por diseño.
TL;DRUtilice la etiqueta noscript en el elemento del cuerpo HTML para hacer visible el texto cuando el script está deshabilitado. La extensión del navegador funciona correctamente según el estándar HTML, pero está limitada por diseño.