Récemment, j'ai participé à une frénésie de «vue source» sur des sites Web avec un design et un contenu intéressants. L'un de ces sites Web, Squarespace , contient des blocs de <script>
balises à l'intérieur d'une <noscript>
balise, comme ceci:
<!-- 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>
...
...
Cela m'a semblé étrange et m'a fait chercher des informations sur Google pour voir s'il y avait une sorte de fonctionnalité / but caché pour un si étrange morceau de HTML, mais en vain. Y a-t-il une sorte de but à avoir des <script>
balises à l'intérieur des <noscript>
éléments, ou est-ce juste un exemple de mauvais HTML?
javascript
html
noscript
Agent.Logic_
la source
la source
<base href="">
,<meta … />
,<title>
et<link … />
éléments) on dirait qu'ils abusent<noscript>
pour templating.Réponses:
J'ai fait quelques recherches dans leur code et j'ai trouvé cet extrait (je l'ai nettoyé pour le rendre plus lisible):
Comme vous pouvez le voir, la
<noscript>
balise a l'ID#inline-deps
, qui est référencé dans le code (ligne 3) pour charger les dépendances de manière asynchrone et à la demande.Ils utilisent probablement un
<noscript>
élément car il leur permet d'accéder directement aux éléments du DOM, au lieu d'avoir à le placer dans une chaîne ou un commentaire (que je considère particulièrement mauvais, car les commentaires ne sont pas destinés à des informations réelles), puis à les analyser. Il empêche également l'exécution de scripts et de styles CSS jusqu'à ce qu'ils soient spécifiquement chargés.Personnellement, je trouve que c'est un abus de la
<noscript>
balise. Je ne suis même pas sûr que ce soit du code HTML5 valide. L'utilisation d'autres méthodes telles que la déclaration de dépendances dans un objet JavaScript avec un chargeur de script doit être utilisée dans la mesure du possible.la source
<script type="text/html">...</script>
utilisé dans le même but - quelqu'un a des avantages / inconvénients des deux?<noscript>
serait visible pour les utilisateurs non-JavaScript; la plupart des sites ne prennent tout simplement pas en charge ces utilisateurs, mais vous souhaitez également leur montrer un simple message explicatif.