Ostatnio byłem na szaleństwie „view source” na stronach internetowych o ciekawym wyglądzie i zawartości. Jedna z tych witryn, Squarespace , zawiera bloki <script>
tagów wewnątrz <noscript>
tagu, na przykład:
<!-- 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>
...
...
Wydało mi się to dziwne i sprawiło, że zacząłem szukać informacji, aby sprawdzić, czy jest jakaś ukryta funkcja / cel dla tak dziwnego fragmentu HTML, ale bezskutecznie. Czy jest jakiś cel umieszczanie <script>
tagów wewnątrz <noscript>
elementów, czy to tylko przykład złego kodu HTML?
javascript
html
noscript
Agent.Logic_
źródło
źródło
<base href="">
,<meta … />
,<title>
a<link … />
elementy) wygląda na to, że nadużywają<noscript>
dla szablonów.Odpowiedzi:
Przeszukałem ich kod i znalazłem ten fragment (wyczyściłem go, aby był bardziej czytelny):
Jak widać,
<noscript>
tag ma identyfikator#inline-deps
, do którego odwołuje się kod (wiersz 3), aby ładować zależności asynchronicznie i na żądanie.Prawdopodobnie używają
<noscript>
elementu, ponieważ umożliwia im on bezpośredni dostęp do elementów DOM, zamiast umieszczać go w ciągu znaków lub komentarzu (co uważam za szczególnie złe, ponieważ komentarze nie są przeznaczone dla rzeczywistych informacji), a następnie je analizować. Zapobiega również wykonywaniu skryptów i stylów CSS, dopóki nie zostaną specjalnie załadowane.Osobiście uważam to za nadużycie
<noscript>
tagu. Nie jestem nawet pewien, czy to prawidłowy kod HTML5. W miarę możliwości należy używać innych metod, takich jak deklarowanie zależności w obiekcie JavaScript za pomocą programu ładującego skrypt.źródło
<script type="text/html">...</script>
używane w tym samym celu - ktoś ma zalety / wady tych dwóch?<noscript>
byłoby widoczne dla użytkowników innych niż JavaScript; większość witryn po prostu nie obsługuje tych użytkowników, ale warto też pokazać im prostą wiadomość wyjaśniającą.