Проверка HTML: стоит ли это того?


52

Каковы преимущества и недостатки (если таковые имеются) обеспечения правильности всех страниц по сравнению с наличием недействительного HTML, который, тем не менее, работает во всех основных браузерах?

Кроме того, так же важно иметь действительный HTML после выполнения Javascript?


5
Это не отвечает на ваш вопрос, но ... размещение doctype на вашей странице переведет браузер в режим стандартов вместо режима причуд. Посмотрите в режиме причуд, чтобы понять, что я имею в виду.
Эван Плейс

1
@Evan Plaice - Не любой DOCTYPE, хотя. Некоторые DOCTYPES фактически вызывают причуды или почти стандартные режимы. Спецификация HTML5 объясняет это более подробно.
luiscubal

1
@luiscubal Это новое в HTML 5, потому что из en.wikipedia.org/wiki/Quirks_mode говорится: «... если присутствует полный DOCTYPE, браузер будет использовать режим стандартов, а если он отсутствует, браузер будет использовать режим причуд "..
Эван Плейс

@Evan Plaice Не уверен насчет предыдущих версий HTML, но в HTML5 конкретно указано, что делать с древними DOCTYPES: см. Whatwg.org/specs/web-apps/current-work/multipage/…
luiscubal

1
@Evan Plaice Другими словами, «DTD HTML 2.0 Level 1» запускает режим причуд.
luiscubal

Ответы:


42

Я думаю, что это определенно стоит сделать , но вы никогда не должны быть рабом валидации - это дурацкая игра.

http://www.codinghorror.com/blog/2009/03/html-validation-does-it-matter.html

  1. Проверьте ваш HTML. Знайте, что значит иметь правильную разметку HTML. Понять инструменты. Больше информации всегда лучше, чем меньше информации. Зачем летать вслепую?

  2. Никого не волнует, верен ли ваш HTML. Кроме тебя. Если хочешь. Не думайте ни на секунду, что создание совершенно корректного HTML важнее, чем запуск вашего веб-сайта, предоставление функций, которые порадуют ваших пользователей, или выполнение работы.


3
Я должен второй это. Я видел много проблем с библиотеками JavaScript, которые можно обвинить в неправильном HTML. Главные нарушители - множественные вложенные формы и незаконно закрытые теги. Как говорит Джефф, не будь рабом, но не жалуйся, когда jQuery не работает, потому что твоя страница не является допустимым HTML (XHTML, HTML 5 или что-то, что ты выбрал в качестве типа документа).
Гарет Фаррингтон

@Джефф Этвуд: не могу ли я согласиться, когда вы говорите: «Никому нет дела, если ваш HTML верен. Кроме вас». Грустно, но факт, клиентам действительно все равно.
Марко Демайо

@MarcoDemaio Почему это грустно? Как клиент и конечный пользователь, меня больше беспокоит вопрос о том, работает ли сайт во всех браузерах (большинство из которых не соответствуют стандартам с самого начала), чем о том, действительно ли он проверяется. Действительный HTML действительно не имеет значения. Google, Facebook, Twitter, этот сайт и т. Д. Ни на одном соответствующем сайте нет действительной разметки. Почему? Потому что действительный HTML ничего не делает, кроме как раздувает страницу и увеличивает ваши расходы на пропускную способность.
NullUserException

То же самое относится и к идеально размеченной разметке. Это еще более бесполезно, это 100% трата пропускной способности и не имеет никакого практического применения вообще.
NullUserException

@NullUserException: я думаю, что это грустно, потому что я обнаружил, что проверенные сайты обычно визуализируются намного лучше во всех браузерах. См. Мой комментарий к ответу Алана: webmasters.stackexchange.com/a/373/1429 Проверка веб-сайта, сохраненного для меня, и все еще экономит мне огромное количество времени. О совершенной отступной разметке я никогда не слышал о спецификациях об этом. Я мог бы сделать отступ на 3 пробела, а вы можете сделать отступ на один.
Марко Демайо

32

Я считаю действительный HTML стоящей целью, но не считаю его основной целью создания хороших веб-сайтов.

Хитрость заключается в том, что ваша разметка может быть совершенно корректной, но она не может быть семантической - например, использование таблиц для разметки или навигации. Есть разница между действительным кодом и семантическим кодом.

С другой стороны, если вы используете рекламные или внешние скрипты, они могут вставить свою собственную разметку, которая может действительно испортить вашу собственную.


22

Я думаю, что это того стоит, так как я обнаружил много ошибок разметки и логики, пытаясь получить подтверждение. Это одна из тех «необходимых, но недостаточных» вещей. Допустимая разметка, например, код, который компилируется (или проверяется с помощью JSlint) без ошибок, предупреждений и подсказок, является хорошим первым шагом к правильному пониманию.


+1 полностью согласен с этим. Проверка страниц экономит огромное количество времени, затрачиваемое на JS и ошибки, возникающие из-за непредвиденных обстоятельств, которые кажутся такими загадочными и возникают только из-за неисправности или отсутствия закрытого HTML-тега. Более того, с такими инструментами, как FF addon, Html Validator [ addons.mozilla.org/en-US/firefox/addon/html-validator/] можно легко проверить все ваши страницы локально.
Марко Демайо

9

Большим плюсом действительного HTML является то, что ваша страница становится более доступной для других вещей, кроме «основных браузеров». У всех «основных браузеров» есть бесконечные обходные пути, чтобы справиться со всем недействительным мусором, который заполняет WWW. Однако придерживаться правильного HTML помогает, например, если кто-то использует браузер для слабовидящих или имеет доступ к вашим страницам в автономном режиме и т. Д.


8

Проверка сама по себе не так критична, так как немногие браузеры на 100% соответствуют требованиям, а спецификация не на 100% ясна в том, как интерпретировать правила.

Однако, будучи верным HTML, вы сможете лучше адаптировать и улучшить свой сайт. По мере продвижения стандартов они, как правило, будут перемещаться вперед, и если ваш новый сайт действителен, тогда обновление для поддержки последних будет проще.

Внизу, будучи действительным, легче оставаться на вершине игры и быть максимально совместимым с самой широкой аудиторией.


4

Лучший способ - узнать, какой неверный HTML плох, а какой неправильный HTML не имеет значения.

Например, забывать закрывать <div>тег - это очень плохо , потому что ваш макет почти наверняка испортится в одном или нескольких браузерах.

Однако использование <br>вместо <br />XHTML не имеет значения - все браузеры без проблем будут интерпретировать оба слова как разрыв строки. Использование targetатрибута в ссылках недопустимо, но в худшем случае браузер не открывает ссылку в новом окне.


targetдействительно в переходном XHTML, и только мазохисты используют строгий. Пропуск закрывающей косой черты сделает вашу страницу недопустимым XML, что, вероятно, приведет к путанице с экрана. Если вы решите использовать XHTML, ваша страница должна быть как минимум действительным XML.
Tgr

1
@Tgr: Забавно, я думал, что мазохисты предпочитают нестандартный режим. Даже переходные типы документов имеют свои проблемы (в режиме «почти стандарт» и т. Д.)
DisgruntledGoat

1
Я бы сказал, что строгое - это важно - зачем рисковать устаревшим кодом и режимом причуд. Использование Strict не требует никаких затрат, кроме того, что оно побуждает вас узнать больше о предпочитаемой версии разметки.
CJM

3

При запуске валидатора вам нужно будет анализировать ошибки, которые он выдает, в каждом конкретном случае. Важна ли валидация? Для меня да, это очень важно. Но это требование? Нет.

Такие вещи, как многократное использование одного и того же идентификатора (вместо класса), размещение элементов уровня блока внутри элементов встроенного уровня (обычно эти элементы также не соответствуют семантическому подходу), отсутствие атрибутов alt на изображениях (плохая доступность для ослабленных ), все важно. Такие вещи, как неизвестные атрибуты тегов, НЕ важны. Вообще. Фреймворки Javascript, такие как Dojo или эта ужасная панель социальных сетей Meebo, используют настраиваемые атрибуты в качестве хуков, и спецификация HTML утверждает, что они разрешены и что любой неизвестный атрибут следует игнорировать. Валидатор их не игнорирует, но выдает ошибки. Эти ошибки можно игнорировать.

При проверке не просто предполагайте, что если у вас есть ошибки, вы делаете это неправильно. Семантика гораздо важнее, и так получилось, что действительный HTML чаще всего является естественным результатом правильной семантики.


Я согласен - подтвердите вашу веб-страницу, но в некоторых случаях вы можете игнорировать предупреждения, если вы знаете, почему они есть
Casebash

3

Одна из причин для проверки вашего сайта на предмет корректного HTML заключается в том, что он гарантирует, что пауки поисковых систем смогут полностью проиндексировать и определить значение ваших страниц. Если они не могут этого сделать из-за неправильно сформированного HTML (который основные браузеры могут обойти по историческим причинам), то вы потенциально ограничиваете свой рейтинг в поисковых системах.

Также есть предположение, что хотя основные поисковые системы хорошо справляются с некорректным HTML, они также могут назначать «баллы» качества страницы за достоверность, что еще больше влияет на вашу способность занимать настолько высокие позиции, насколько этого заслуживает ваш контент.


2
Google категорически заявил, что неверный HTML не влияет на рейтинг. Однако я вижу случай, когда HTML настолько искажен, что пауки не могут прочитать фактическое содержимое страницы - хотя в этом случае почти наверняка браузеры начнут испытывать проблемы с рендерингом.
Рассерженная шлюха

@DisgruntledGoat Вы правы, вот ссылка для этого: youtube.com/watch?v=FPBACTS-tyg
JasonBirch

@DisgruntledGoat Очевидно ... Google сам полон недопустимого HTML, и я помню, что они сказали, что им все равно, и что хорошо иметь недопустимый HTML, если это означает более быстрое время загрузки.
NullUserException

3

Я действительно не думаю, что это имеет значение больше. Раньше я был рабом проверки, а теперь редко проверяю его. Возможно, я устал от проверки того, что мой сайт действителен, или, может быть, мне уже все равно, потому что больше никто не будет. Я могу гарантировать, что 99,9% наших посетителей даже не знают, что это такое, и даже не заботятся о том, знают ли они. Будущее программное обеспечение браузера может, но когда этот день наступит, я буду беспокоиться об этом потом.


2

Проверка полезна, потому что она может помочь вам обнаружить некоторые трудно обнаруживаемые ошибки, такие как

<input name=foo value=<?php echo htmlspecialchars($_GET['foo']); ?> />

или непредсказуемое поведение браузера (например, вставка элементов блока aв Firefox может порой плохо работать ).


2

Еще никто не упомянул, что недопустимый HTML-код может привести к более медленному времени рендеринга, в то время как браузер пытается разобраться с нестандартным HTML-кодом при отображении.


Я бы понизил это, если бы мог. Я очень сомневаюсь, что это имеет какой-либо заметный эффект; Я был бы более заинтересован в правильной разметке, которая вздувает страницу и требует больше времени для загрузки (особенно на медленных / мобильных соединениях).
NullUserException

@NullUserExceptions: Я не думаю, что высказывание BradB заслуживает -1. Может быть, это трудно доказать, но браузер, который должен разобраться и исправить внутри беспорядка HTML, мог занять немного больше чем хорошо отформатированная действительная страница HTML без ошибок в этом. Почему бы вам не дать ответ на этот вопрос, демонстрируя нам хороший пример слишком раздутой страницы из-за неправильной проверки HTML. Я не могу думать о том, как допустимая HTML-страница может быть перегружена по сравнению с той же страницей с недействительным HTML-кодом.
Марко Демайо

1

нет недостатка в наличии действительного HTML. есть причина, по которой спецификация стоит на первом месте и почему в спецификацию вкладывается много усилий, чтобы определить, как все должно работать.

в основном, все, что вы получаете, это соответствовать спецификациям. Это, в свою очередь, означает, что программы, написанные для чтения html (браузеры, боты), не могут винить ВАС за несоответствие спецификациям, если что-то пойдет не так. и некоторые из этих программ дают вам дополнительные очки (более высокий рейтинг в поисковых системах, если бот сообщает «соответствует спецификации»). если вы соответствуете спецификациям, вы будете гораздо меньше застигнуты врасплох, если некоторые браузеры не будут отображать испорченный html так, как вы думаете.

Таким образом, соответствие спецификациям и написание действительного html - это хорошо для вас, никаких недостатков.


Хм, в каких поисковых системах вы получаете более высокий рейтинг, если соответствуете спецификациям?

2
Недостатком было бы дополнительное время разработки, которое вы тратите, чтобы убедиться, что весь ваш код соответствует спецификации. Хотя эта стоимость, как правило, минимальна, ее все равно следует рассматривать как недостаток.
Чат

@kinopiko: если таковые имеются, это не один из основных (Google, Yahoo, Bing, Ask). Наличие полного беспорядка кода, который не может прочитать даже опытный (человеческий) веб-разработчик, вероятно, помешает вам, но использование некоторых «нелегальных» атрибутов абсолютно не влияет на ранжирование.
Рассерженная шлюха

Это проблема с терминологией проверки. Вы либо действительны, либо нет. Там нет степеней. Неработающий HTML (например, незакрытые теги, неуместные / отсутствующие структурные теги и т. Д.) Является недействительным и наносит ущерб SEO, но большинство людей не говорят об этом, когда говорят «проверка». Новичок может захотеть использовать валидатор, чтобы убедиться, что он не совершил ни одной из этих ошибок новичка, но профессиональный разработчик не нуждается в этом, так как их код уже «достаточно валиден», так сказать с точки зрения SEO.
Lèse Majesté

1

Некоторые ошибки проверки HTML могут вызывать неочевидные проблемы с макетом (например, неправильно вложенные / незамкнутые теги), ошибки JavaScript (например, использование idболее одного раза) и проблемы для некоторых пользователей (например, не включая значимый или пустой altатрибут на изображениях).

Если все наши страницы проверены, это хорошая автоматическая проверка, которую вы можете сделать, чтобы исключить источники ошибок. Если вы оставите некоторые ошибки проверки, потому что знаете, что они не причиняют никакого вреда, ваша проверка больше не автоматизируется: вам нужно просматривать каждую ошибку и помнить, что все в порядке. Лично я предпочитаю, когда компьютеры уменьшают объем работы, которую я должен сделать, а не увеличивают ее.


1

Один момент, о котором никто не упомянул, это будущие разработки браузеров. Хотя все современные браузеры относительно хорошо справляются с некорректной разметкой, это не всегда так.

Производители браузеров в будущем будут следить за тем, чтобы их браузеры работали в соответствии со стандартами HTML / XHTML, поэтому веб-разработчикам также следует обратить на это внимание. Тот факт, что определенная часть недопустимой разметки работает сейчас, не гарантирует, что она будет работать в будущих браузерах.


Должен сказать, мне интересно, правда ли это.

2
Да, я не вижу, чтобы какой-либо браузер отказывался от поддержки <font>тега или тому подобного.
Рассерженная шлюха

Я не вижу, в чем проблема - поддержка устаревшей или неправильной разметки может измениться в будущем. Не обращая внимания на несовершенную реализацию (X) HTML в большинстве браузеров, вам наверняка будет безопаснее придерживаться правильной разметки. С действительной разметкой нет никаких затрат, кроме простого знания того, что вы делаете.
CJM

1

Валидность помогает вам избежать несовместимости и помогает поддерживать код в удобном доступе. Браузеры восстанавливаются после ошибок разметки, но иногда очень неинтуитивно.


  • На основе DTD (HTML4, XHTML1 @ W3C) - может не стоить того. DTD является примитивным и, например, не может проверить достоверность большинства атрибутов. В большинстве случаев вам будет трудно понять ошибки в сущностях и вложенности.

  • Валидатор HTML5 - Да . Определенно. HTML5 более прагматичен и допускает некоторые безопасные конструкции, которые раньше были ошибками. Валидатор OTOH Анри гораздо тщательнее и лучше обнаруживает реальные проблемы.


Корректность JS-сгенерированного кода может иметь значение, так как браузеры работают с DOM, независимо от того, как он был создан. Если вы используете document.write(), то вам даже нужно позаботиться о том, чтобы получить правильный синтаксис (он проходит через тот же парсер, что и источник страницы).



0

Google и Bing не используют, не имеют и никогда не будут использовать проверку CSS или HTML в качестве фактора ранжирования.

Большинство веб-сайтов имеют десятки или сотни ошибок, и вам не нужно беспокоиться о них, потому что все поисковые системы заботятся о том, как страница отображается. Просто убедитесь, что ваш сайт отображается правильно во всех основных браузерах и Google Fetch .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.