Następująca praktyka jest dość powszechna w wbudowanym JavaScript, z którym muszę pracować:
<script type="text/javascript">
<!--
// Code goes here
//-->
</script>
Wiem, że chodzi o to, aby przeglądarki, które są niezgodne z JavaScriptem, nie renderowały źródła, ale czy nadal jest to najlepsza praktyka? Zdecydowana większość używanych obecnie przeglądarek potrafi interpretować JavaScript; nawet nowoczesne urządzenia mobilne zwykle nie mają problemów.
A jeśli chodzi o pytanie „dlaczego nie?” pytanie: Ostatnio musiałem spędzić kilka godzin na debugowaniu problemu polegającego na tym, że ktoś zostawił znak „//” przed znakiem „->” na końcu tagu skryptu ukryty głęboko w niektórych stronach, co powodowało tajemniczy JavaScript błędy.
Co robisz? Czy jest to nadal uważane za „najlepszą praktykę”?
javascript
html
AndreiM
źródło
źródło
Odpowiedzi:
Ważne jest to, że w dzisiejszych czasach to, czy dana przeglądarka obsługuje JavaScript, czy nie, nie ma znaczenia (najwyraźniej zdecydowana większość to robi) - nie ma znaczenia, ponieważ prawie wszyscy rozumieją bloki skryptów, co oznacza, że wiedzą, że ignorują JavaScript, nawet jeśli nie mogą zinterpretować to.
Matt Kruse podaje nieco bardziej szczegółowe wyjaśnienie w swojej witrynie JavaScript Toolbox, dlaczego nie należy używać komentarzy HTML w blokach skryptów.
Cytat z tej strony:
Nie używaj komentarzy HTML w blokach skryptów
W starożytności javascript (1995) niektóre przeglądarki, takie jak Netscape 1.0, nie miały żadnego wsparcia ani wiedzy na temat tagu skryptu. Kiedy więc javascript został wydany po raz pierwszy, potrzebna była technika, aby ukryć kod przed starszymi przeglądarkami, aby nie wyświetlały go jako tekst na stronie. „Hack” polegał na użyciu komentarzy HTML w bloku skryptu, aby ukryć kod.
Używanie komentarzy HTML w skrypcie jest złe
Żadna z powszechnie używanych obecnie przeglądarek nie ignoruje tagu <script>, więc ukrywanie źródła javascript nie jest już konieczne. W rzeczywistości można go uznać za szkodliwy z następujących powodów:
źródło
Przestałem to robić. W pewnym momencie musisz po prostu puścić swoją mozaikę NCSA.
źródło
Zgodnie z zaleceniem W3C przydatne było głównie ukrycie danych skryptu przed USER AGENTS.
Cytat z W3c :
Komentowanie skryptów w JavaScript Silnik JavaScript zezwala na
"<!--"
występowanie ciągu znaków na początku elementu SCRIPT i ignoruje dalsze znaki aż do końca linii. JavaScript interpretuje „//” jako początek komentarza, który kończy się na końcu bieżącego wiersza. Jest to konieczne, aby ukryć ciąg „->” przed parserem JavaScript.źródło
Nie, to kac po obejściu zastosowanym przy pierwszym wprowadzeniu elementu script. Żadna przeglądarka nie jest obecnie w stanie zrozumieć elementu skryptu (nawet jeśli rozumie go jako „Skrypt, który należy zignorować, ponieważ skrypty są wyłączone lub nie są obsługiwane”).
W XHTML są aktywnie szkodliwe.
Jakiś czas temu napisałem coś o jego historii .
źródło
Przestałem używać tego jakiś czas temu. Ponadto, według Douglasa Crockforda , możesz usunąć atrybut type z tagów skryptu, ponieważ jedynym językiem skryptowym dostępnym w większości przeglądarek jest JavaScript.
źródło
Jeśli piszesz ręcznie, radzę zawsze używać zewnętrznych plików js, które bardzo by pomogły.
Jeśli chodzi o Twoje obawy: większość przeglądarek obsługuje obecnie JavaScript. Jednak czasami ludzie mogą pisać proste parsery, aby bezpośrednio pobierać HTML - i muszę powiedzieć, że bezpieczny cytat jest naprawdę pomocny dla tych klientów. Również niektórzy klienci nie-JS, tacy jak stary Lynx, odnieśliby z tego korzyści.
źródło
Jeśli nie umieścisz literału między tagami skryptów - to znaczy, jeśli ładujesz skrypty z plików src, możesz zapomnieć o komentarzach.
źródło
Zalecałbym użycie sekcji CDATA, jak opisano w tym pytaniu .
źródło
Przestałem to robić wieki temu. Naprawdę nie potrzebujesz tego w dzisiejszych czasach.
źródło
Nie robię tego, ale pewnego dnia poszedłem sprawdzić moją witrynę chronioną hasłem w w3c. Musiałem więc użyć ich metody bezpośredniego wprowadzania. Narzekał na mój javascript, więc umieściłem komentarze z powrotem we wszystkim, co było w porządku.
źródło