He estado en una juerga de "ver fuente" últimamente en sitios web con diseño y contenido interesantes. Uno de esos sitios web, Squarespace , tiene bloques de <script>
etiquetas dentro de una <noscript>
etiqueta, así:
<!-- Page is at: http://squarespace.com -->
...
...
<noscript id="inline-deps">
<link rel="stylesheet" type="text/css" href="//cloud.typography.com/7811972/758964/css/fonts.css" />
<script type="text/javascript" src="https://static.squarespace.com/static/ta/5134cbefe4b0c6fb04df8065/7400/assets/logomark/logomark.min.js?37"></script>
<link rel="stylesheet" href="https://static.squarespace.com/static/ta/5134cbefe4b0c6fb04df8065/7400/assets/logomark/logomark.min.css?37" type="text/css" />
</noscript>
...
...
Me pareció extraño, y busqué información en Google para ver si hay algún tipo de funcionalidad / propósito oculto para un HTML tan extraño, pero fue en vano. ¿Hay algún tipo de propósito para tener <script>
etiquetas dentro de los <noscript>
elementos, o es solo un ejemplo de HTML incorrecto?
javascript
html
noscript
Agent.Logic_
fuente
fuente
<base href="">
,<meta … />
,<title>
y<link … />
elementos) parece que están abusando<noscript>
de plantillas.Respuestas:
Hice un poco de búsqueda a través de su código y encontré este fragmento (lo he limpiado para que sea más legible):
Como puede ver, la
<noscript>
etiqueta tiene la ID#inline-deps
, a la que se hace referencia en el código (línea 3) para cargar dependencias de forma asíncrona y bajo demanda.Probablemente usan un
<noscript>
elemento, ya que les permite acceder directamente a elementos DOM, en lugar de tener que colocarlo en una cadena o un comentario (lo que considero particularmente malo, ya que los comentarios no están destinados a información real) y luego analizarlo. También evita la ejecución de scripts y estilos CSS hasta que se cargue específicamente.Personalmente, considero que se trata de un abuso de la
<noscript>
etiqueta. Ni siquiera estoy seguro de si es un código HTML5 válido. El uso de otros métodos, como declarar dependencias en un objeto JavaScript con un cargador de scripts, se debe utilizar siempre que sea posible.fuente
<script type="text/html">...</script>
usa para el mismo propósito: ¿alguien tiene pros / contras de los dos?<noscript>
sea visible para usuarios que no sean JavaScript; la mayoría de los sitios simplemente no admiten esos usuarios, pero también querrás mostrarles un mensaje explicativo simple.