Возможно ли иметь код, соответствующий стандартам W3C, когда вам требуется поддержка IE6? W3 - PullRequest
3 голосов
/ 03 декабря 2009

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

У вас, ребята, есть какие-нибудь мысли на этот счет?

Вот к чему я иду:

  • Семантический код - ДА
  • Проверочный код - ДА
  • Работает в IE6 - ДА

Давайте не будем спорить по поводу семантики здесь, лол. =]

HTML JS CSS

Ответы [ 4 ]

11 голосов
/ 03 декабря 2009

Да, вы можете иметь полностью совместимый код и хранить бессмысленный IE6 в отдельном файле (обычно):

Просто скройте любой специфический для IE6 код с помощью условных операторов IE. Это предпочтительный способ сделать это, если вы хотите, чтобы ваш CSS все еще проверял. Кроме того, весь корректный HTML должен нормально работать в IE6 с правильным стилем, применяемым через CSS:

<!--[if lte IE 6]>
   <link rel="stylesheet" href="/css/ie6.css" type="text/css" media="screen" />
<![endif]-->

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

Фактически, поскольку условный комментарий - это всего лишь комментарий HTML, даже этот код все еще действителен.

EDIT :

Единственный способ доказать это - создать пример, но все три возможны с IE6 и соответствующими знаниями в коде.

  1. Семантический код: ДА
  2. Проверочный код: ДА
  3. Работает в IE6: ДА

Фактически, не только IE6 представляет проблему с допустимым кодом, но и IE6 и IE7 (и IE8), но, опять же, только в CSS. Проверьте ваши основные CSS-файлы, но держите CSS IE6 отдельно с помощью условных выражений.

Редко нужно добавлять дополнительную разметку в HTML для поддержки IE6 (кроме условных в head). Это просто вопрос понимания блочной модели и соответствующего построения ваших семантических страниц.

Один или два divs не являются злом, если они представляют надлежащую группировку. Три вложенных divs для исправления bug это зло:)

4 голосов
/ 03 декабря 2009

Краткий ответ: да!

По моему опыту, действительная семантическая разметка действительно лучше работает с IE6. Объедините это с правильным, корректным и простым CSS, и вы в значительной степени золотые. Конечно, вы столкнетесь с некоторым странным поведением в IE6, особенно для более сложных проектов, как отмечено выше. Однако большинство этих ошибок хорошо документированы . С помощью простого, корректного кода выявлять и устранять эти проблемы часто довольно просто.

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

Все еще не можете заставить его работать? Изящно деградировать! Конечно, закругленные углы красивы и все в ярости, но 20% (надеюсь, меньше) ваших пользователей, которые все еще живут в темные века, вероятно, не будут скучать по ним.

1 голос
/ 03 декабря 2009

Нужно немного поработать, чтобы заставить код работать в IE6, и есть немного поработать, чтобы проверить код, но это не значит, что это та же самая работа, или что один из них сделает другое невозможно.

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

Конечно, легче заставить код работать в IE6, если вам не нужно одновременно думать о допустимом коде, но это только потому, что нужно учитывать больше факторов, а не потому, что факторы сами по себе несовместимы.

0 голосов
/ 03 декабря 2009

Нет, это невозможно для любого умеренно сложного макета.

РЕДАКТИРОВАТЬ: По крайней мере, без добавления множества уродливых условных выражений.

...