Я строю сайт прямо сейчас, до сих пор я болезненно принуждал все к тому, чтобы быть совместимым, и он выглядит примерно так же в браузерах. Тем не менее, я начинаю реализовывать некоторые сторонние/бесплатные javascripts, которые делают такие вещи, как добавление атрибутов (например, order = 2). Я мог бы обойти это, но это боль, и я начинаю терять своих принципов, чтобы убедиться, что все действительно. Действительно, есть ли смысл работать над чем-то подобным? Я получил плагин HTMLValidator для Firefox, и, глядя на большинство основных сайтов (включая этот, google и т. Д.), Они не являются допустимыми XHTML или HTML.Является ли соответствие XHTML бессмысленным?
ответ
Мне еще предстоит испытать экземпляр, в котором добавление нестандартного атрибута вызвало проблему рендеринга в любом браузере.
Не пытайтесь обойти эти нестандартные атрибуты. Валидаторы удобны в качестве инструментов для двойной проверки кода на непреднамеренные ошибки, но, как мы все знаем, даже полностью допустимый xhtml не всегда будет постоянно отображаться в браузерах. Существует много раз, когда проектные решения требуют от нас использовать специфичные для браузера (и нестандартные) хаки для достижения эффекта. Это жизнь веб-разработчика, о чем свидетельствует количество сайтов, занимающихся разработкой технологий (google, yahoo и т. Д.), Которые не проверяются.
Просто имейте в виду, что в большинстве браузеров тег XHTML отличается по сравнению с отсутствием его. Атрибут DOCTYPE определяет, в каком режиме браузер отображает и диктует, что такое и не разрешено. Если вы отклонились от соответствия XHTML, обязательно повторите проверку во всех браузерах.
Лично я придерживаюсь новейших стандартов, когда это возможно, но вы должны взвешивать время/деньги на соответствие, и это зависит от личных предпочтений для большинства.
Валидация полезна для определения того, когда вещи не соответствуют стандартам, с которыми вы, по-видимому, согласны. Если вы целенаправленно используете инструмент, который специально добавляет что-то не в стандарты проверки, очевидно, что это не нарушает ваше личное соглашение о стандартах.
Это обсуждение становится намного сложнее, если у вас есть босс или клиент, который считает, что все должно вернуть зеленый свет, так как вам придется объяснять им вышеизложенное и убеждать их, что это не просто вы ленитесь.
Это значит, что это не просто случай, когда вы ленитесь. Хотя валидаторы могут досадно постоянно поднимать каждый экземпляр атрибута третьей стороны, это не делает недействительными (га) другие ошибки проверки, которые они упоминают. Это часто стоит проверить, как средство двойной проверки вашей работы.
Быть HTML Valid, как правило, помогает как вам, так и механизму рендеринга браузера. Чем меньше призраков, с которыми приходится сталкиваться браузерам, тем больше они могут сосредоточиться на добавлении новых функций. Чем более строгим вы являетесь, тем меньше времени вы потратите на то, чтобы узнать, почему этот f @ # cking запатентованный тег не работает в других браузерах.
С другой стороны, XHTML является, ИМХО, более бессмысленным, за исключением случаев, когда вы планируете интегрировать его в какой-либо XML-документ. Поскольку IE все еще не распознает его, довольно бесполезно оставаться в руке.
Если вы планируете использовать XHTML как XML, то это стоит того, чтобы сделать ваши страницы действительными и хорошо сформированными. В противном случае простой старый семантический HTML, вероятно, вы хотите. В любом случае потребности вашей аудитории перевешивают потребности валидатора.
Соответствие стандартам - это увеличение вероятности того, что ваша страница будет работать в браузерах, которые вы не тестируете. Это включает в себя программы чтения с экрана и следующее обновление браузеров, которые вы тестируете, и браузеры, которые вы тестируете, но которые были настроены неожиданным образом пользователем.
Подтверждение не гарантирует вас ничем, так как ваша страница может быть проверена, но все же достаточно неоднозначна, что она не будет вести себя так, как вы хотите, чтобы она появилась в каком-то браузере.
Однако, если ваша страница подтверждает, вы, по крайней мере, имеете силу спецификации XHTML, говорящей, как она должна себя вести. Если это не подтверждается, все, что у вас есть, это куча неформальных соглашений между браузерами.
Возможно, лучше написать допустимый HTML 3, чем недействительный XHTML, если есть что-то, что вы хотите сделать, что разрешено в одном, но не в другом.
+1 для вашего заключительного абзаца – 2012-05-23 10:48:04
Я стараюсь писать совместимый код большую часть времени, взвешивая время/стоимость и потребности аудитории во всех случаях, кроме одного. Там, где код должен соответствовать требованиям 503, в ваших интересах и заинтересованности вашей аудитории писать совместимый код. Я столкнулся с кучей экранных считывателей, которые взорвались, когда код даже слегка отключился.
Как и большинство плакатов, это действительно все, что нужно вашей аудитории.
Я думаю, что писать «действительный код» важно, просто потому, что вы устанавливаете пример, следуя правилам. Если каждый разработчик написал код для Fx, Safari и Opera, я думаю, что IE должен был «начинать следовать правилам» раньше, чем с версией 8.
Это не бессмысленно, но есть много оснований для его разрушения. На начальных этапах разработки CSS это очень полезно для диагностики проблем браузера, если ваша разметка действительна. Помимо этого, если вы хотите что-то сделать, и вы считаете, что наиболее подходящим методом является нарушение проверки, это обычно нормально.
Альтернативой использованию пользовательских атрибутов является использование атрибута rel, для примера см. Litebox (и его родственники).
Что касается браузеров, то, соблюдение XHTML бессмысленно в том, что:
Браузеры не имеют XHTML парсеров. У них есть не зависящие от версии, веб-совместимые HTML-парсеры, которые создают DOM вокруг пространства имен http://www.w3.org/1999/xhtml.
Некоторые браузеры, у которых есть синтаксические анализаторы XML, могут обрабатывать разметку XHTML как приложение/xhtml + xml как XML. Это займет XML и даст стиль и поведение HTML по умолчанию для элементов в пространстве имен http://www.w3.org/1999/xhtml. Но, что касается синтаксического анализа, это не имеет ничего общего с XHTML. Используются правила XML-анализа, а не некоторые правила DTD XHTML.
Итак, когда вы используете разметку XHTML, вы даете что-то чуждо браузеру и видите, если оно выходит так, как вы намереваетесь. Дело в том, что вы можете сделать это с любой разметкой. Если он делает так, как предполагалось, и создает правильный DOM, вы делаете очень хорошо. Вам просто нужно следить за переключением DOCTYPE и быть уверенным, что вы не полагаетесь на ошибку браузера (так что все не разваливается в браузерах, у которых нет ошибки).
Какое соответствие XHTML подходит для проверки синтаксиса (путем проверки), чтобы увидеть, хорошо ли сформирована разметка. Это помогает избежать разбора ошибок. Конечно, это можно сделать и с HTML, поэтому в этом случае нет ничего особенного в XHTML.В любом случае вам все равно придется тестировать в браузерах и надеяться, что производители браузеров сделают потрясающие HTML-парсеры, которые могут принимать всевозможные дерьмо.
Что не бессмысленно пытаться соответствовать тем, что ожидают браузеры. HTML5 помогает с этим большим временем. И, говоря о HTML5, вы можете определить пользовательские атрибуты, которые вы хотите. Просто префикс их с данными, как в < p data-order = "Это допустимый, настраиваемый атрибут." > тест </p >.
Несомненно, вы всегда можете просто пойти вперед и написать его так, как вы хотите, убедившись, что, как минимум, это работает. Конечно, мы уже пережили этот менталитет и стали свидетелями его выхода, Internet Explorer 6.
Я большой поклонник Mike Davidson approach to standards-oriented development.
Только потому, что вы можете проверить свой код, это не значит, что вы лучше, чем кто-либо другой. Черт, это даже не обязательно означает, что вы лучше пишете код, чем кто-либо другой. Кто-то, кто может написать банковское приложение полностью во Flash, является лучшим кодером, чем вы. Кто-то, кто может интегрировать сторонний код в сложную среду публикации, лучше кодера, чем вы. Подумайте об утверждении, как использование идеальной грамматики изображения; это помогает вам разобраться в своих идеях и является признаком хорошего образования, но это не так важно, как идеи и концепции, о которых вы думаете и впоследствии общаетесь. Самый харизматичный и, возможно, умный человек, с которым я когда-либо работал, был с Юга и использовал слово «не» довольно регулярно. Это не сделало его менее умным, и, по сути, это сделало его более запоминающимся. Так что все, что я говорю, есть много вещей, чтобы судить кого-то ... Валидация - одна из них, но, конечно, не самая важная.
Многие люди неправильно понимают это сообщение, что означает, что мы не должны кодировать стандарты. Мы должны, очевидно, но это не то, о чем нужно даже подумать. Армия валидации всегда будет оценивать те, которые не проверяются, но проверка означает гораздо больше, чем действительный код.
Итак, не теряйте свои принципы, но помните, что если вы будете следовать стандартам, вы вряд ли окажетесь в глубине проблем в будущем. Содержимое, которое вы пытаетесь предоставить, гораздо важнее, чем его отображение.
Также см. Вопрос «Выбор HTML-версии»: http://stackoverflow.com/questions/3654/html-version-choice – Chris 2008-09-19 13:41:43
Я удалил метку соответствия меткости. Нагло оскорбительно, ИМХО. – 2008-11-11 10:36:37