Валидность JavaScript
Я уже когда говорил о важности валидности HTML-кода. Как показывает практика, 95% сайтов не являются валидными. Самое интересное, что некоторые из этих сайтов не валидны только по причине написания JavaScript. Фактически, чуть-чуть не хватило им до хорошего, грамотного и чистого HTML-кода. И в сегодняшней статье я расскажу, как сделать "валидным" JavaScript.
Рассмотрим простой код на JavaScript:
<script type="text/javascript">
document.write("Текст<br />");
</script>
Если попытаться проверить валидность HTML-страницы с таким скриптом, то увидите примерно такую ошибку: "document type does not allow element "br" here". Фактически, валидатор прав: нельзя использовать тег br внутри кавычек. Многие Web-мастера думают: "Глюки валидатора". Но они очень сильно ошибаются... На самом деле, по стандарту все скрипты необходимо помещать в область CDATA, но очень мало, кто об этом знает.
Вот так будет валидный JavaScript:
<script type="text/javascript">
//<![CDATA[
document.write("Текст<br />");
//]]>
</script>
Вот такой JavaScript не будет создавать ошибок при проверке валидности HTML-страницы.
-
- Михаил Русаков
Комментарии (10):
а почему на картинке написано html?
Ответить
Потому что не бывает валидности JavaScript. Но из-за JavaScript страдает валидность HTML. Поэтому на картинке HTML.
Ответить
У меня несколько вопросов. 1)В область CDATA нужно помещать внутренность любого скрипта, или только с br'ом внутри кавычек, 2)Если скрипт вынесен в отдельный файл, то... 3)Какие плюсы дает валидность кода? Кроме того, что "так положено".
Ответить
Nataly, 1)Можно помещать любой скрипт. 2)С валидным кодом поисковые системы лучше работают. Для этого собстенно и были придуманы такие стандарты. Если вёрстка очень грязная, то порой можно и игнор от поисковика по идее получить
Ответить
А если "br />" занести в переменную и прибавить к "Текст <" или же : document.write("Текст<"+"br />");Валидно ли это будет?
Ответить
Да.
Ответить
Михаил подскажите пожалуйста, что за ошибка может быть Line 53, Column 55: document type does not allow element "div" here …div id="facebox" style="display:none;"><div class="popup"><div class="content"… The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed). One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).
Ответить
В данном месте не может находиться div, там должен быть какой-то другой тег.
Ответить
<!-- HotLog --> <script type="text/javascript"> hotlog_r=""+Math.random()+"&s=2301046&im=659&r="+ escape(document.referrer)+"&pg="+escape(window.location.href); hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N"); hotlog_r+="&wh="+screen.width+"x"+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))?screen.colorDepth:screen.pixelDepth); hotlog_r+="&js=1.3"; document.write('<a href="http://click.hotlog.ru/?2301046" target="_blank"><img '+ 'src="http://hit3.hotlog.ru/cgi-bin/hotlog/count?'+ hotlog_r+'" style="border:none;" width="88" height="31" alt="HotLog"/><\/a>'); </script> <noscript> <a href="http://click.hotlog.ru/?2301046" target="_blank"><img src="http://hit3.hotlog.ru/cgi-bin/hotlog/count?s=2301046&im=659" style="border:none;" width="88" height="31" alt="HotLog"/></a> </noscript> <!-- /HotLog --> Михаил, помогите, пожалуйста, с валидностью этого счетчика, валидатор в нем 7 ошибок нашел, подозреваю, что это связано с "target"_blank", но не знаю, как это исправить. Заранее, огромное спасибо
Ответить
http://myrusakov.ru/html-target-valid.html
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.