Czy nadal warto używać tagu komentarza HTML wokół kodu JavaScript?
mam na myśli
<html>
<body>
<script type="text/javascript">
//<!--
document.write("Hello World!");
//-->
</script>
</body>
</html>
javascript
browser
rajakvk
źródło
źródło
Odpowiedzi:
Komentarze HTML, tj.
<!-- -->
, nie są już potrzebne. Miały na celu umożliwienie przeglądarkom, które nie rozumieją<script>
tagu, bezproblemowej degradacji. Te przeglądarki, np. Netscape 1.x nie występuje już w środowisku naturalnym. Więc naprawdę nie ma już sensu umieszczać komentarzy HTML w tagach skryptu.Jeśli chcesz, aby Twój HTML był weryfikowany jako XHTML lub XML, prawdopodobnie chcesz użyć zakomentowanego znacznika CDATA.
<script type="text/javascript"> //<![CDATA[ document.write("Hello World!"); //]]> </script>
Powodem tego jest tak swoje
<
,>
,&
,"
i'
które są częścią kodu JavaScript nie będą musiały być zakodowane jako<
,>
,&
,"
i'
odpowiednio.źródło
</script>
którym zazwyczaj dostaje rozbici na</scr
iipt>
.]]>]]<![CDATA[>
☺<script>
), to nie widzę znaczącej przewagiCDATA
bloku nad tradycyjnym komentarzem. Jedyną różnicą jest to, czy<script>
oficjalnie ma treść, czy nie - a jeśli chodzi o wyszukiwarki, możemy chcieć, aby nie zawierała treści ...Niezupełnie, chyba że kierujesz reklamy na 20-letnie przeglądarki.
źródło
Lepiej jest po prostu unikać razem JavaScript w treści. Ułatwia aktualizację, pozwala uniknąć komentarzy i zmusza do planowania dla użytkowników nieobsługujących JavaScript, a także użytkowników z włączoną obsługą JavaScript.
źródło
.js
kodu JavaScript w plikach zamiast w kodzie HTML utrudnia aktualizację, ponieważ.js
pliki mogą być buforowane.<script type="text/javascript" src="http://example.com/path/to/file.js?v1.0"></script>
Nie w taki sposób, w jaki to robisz, nie.
<! - jest traktowany tak samo jak // w javascript, więc zamiast tego twój kod powinien wyglądać następująco:
<script type="text/javascript"> <!-- document.write("Hello World!"); //--> </script>
... z tą różnicą, że rzadka, mało znana przeglądarka, która może nie rozumieć tagu skryptu, wydrukuje otwierający // na ekranie, co w pewnym sensie uniemożliwia umieszczenie tagu komentarza w tym miejscu.
Tutaj jest więcej informacji na ten temat, jeśli jesteś ciekawy: http://www.javascripter.net/faq/comments.htm
Jednak w końcu nawet bardzo niejasne przeglądarki, które domyślnie nie obsługują javascript (takie jak przeglądanie HTMLLayout lub Netsurf), wiedzą, że najlepiej nie renderować tekstu między tagami skryptu, więc nie, nie jest to już istotne. Jednak wszystkie przeglądarki, na których może Ci zależeć, rozumieją składnię <! -, więc nie ma potrzeby szaleńczo martwić się o usunięcie go z tego, co już masz, ponieważ jest to poprawny js, po prostu pamiętaj, aby nie dodawać go następnym razem.
źródło
Nawet w nowoczesnych przeglądarkach może być przydatne. Właściwie natknąłem się dzisiaj na ten problem, właśnie dlatego, że chciałem uniknąć umieszczania javascript w moim html.
Mam stronę HTML, na której jest wyświetlana, na
http://host/variable_app_name/pagename
którejvariable_app_name
może mieć wiele wartości (wiesz, zmienna). Jeśli chce uzyskać dostęp do plików statycznych, musi użyć adresu URL takiego jakhttp://host/static/variable_app_name/filename
, więc nie mogę określić lokalizacji pliku statycznego bez uprzedniego sprawdzenia lokalizacji przeglądarki, aby znaleźć wartośćvariable_app_name
.Aby utworzyć łącze do głównego pliku javascript, wykonuję następujące czynności:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n'); </script>
Powyższy kod wybuchnie nawet w najnowszej wersji Chrome, ponieważ tag skryptu zostanie zakończony w środku ciągu javascript, a pozostała część ciągu zostanie zinterpretowana jako html, tak jak poniżej:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"> </script> \n'); </script>
Jest wiele sposobów, aby to naprawić, ale ja lubię używać komentarza HTML.
Z komentarzem HTML:
<script type="text/javascript" > <!-- var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n'); --> </script>
Podział ciągu javascript:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></scr'+'ipt>\n'); </script>
Utwórz i dołącz znacznik script zamiast używać document.write:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = '/static/'+variable_app_name+'/pagename.js'; document.head.appendChild(script); </script>
Lubię używać komentarza HTML, ponieważ jest to zwięzła zmiana i nie będzie potrzeby replikowania ani myślenia o każdym połączonym pliku.
źródło