Я использую сценарий ie7/8 Дина Эдвардса. Не уверен, что это моя реализация или нет, но иногда я сталкивался с проблемами ie6, которые не были полностью исправлены или требует специальной обработки, что означало, что я вернусь к тому, с чего начал, заботясь об ie6. Итак, мне было интересно, ie7/8 все еще идет или какая-то другая практика/решение была лучше.
Как программисты борются с ошибками ie6 в наши дни?
Ответы (16)
Обновление: я дополнил свой ответ здесь учебным пособием на моем сайте, которое, вероятно, будет более полезным, чем мой ответ здесь. Ultimate IE6 Cheatsheet: Как исправить более 25 ошибок Internet Explorer 6
Вот как я решаю IE6:
- Я проверяю и XHTML, и CSS.
- Я делаю свои проекты простыми, даже сложными.
- Я не использую хаки, которые делают мой CSS недействительным.
- Я использую фреймворк/библиотеку JavaScript (мне нравится MooTools, но вы получите много голосов за jQuery, Prototype, YUI, Dojo и многие другие), которые решают большинство моих кросс-браузерных проблем с JavaScript.
- Я постепенно улучшаю свои страницы, чтобы они сначала работали без JavaScript, а затем добавляли все навороты.
- Для решения некоторых проблем с двойным полем я использую display:inline;
- Если мне абсолютно необходимо, я использую отдельную таблицу стилей, хотя я обнаружил, что мне приходится делать это все реже и реже.
- Я стараюсь избегать прозрачных изображений в своих макетах. Если они мне абсолютно необходимы, я использую PNG8 с альфа-прозрачностью, которую на самом деле поддерживает IE6.
- Чтобы решить проблему минимальной высоты, я делаю следующее:
Это для IE6, который интерпретирует высоту как минимальную высоту:
.classNameHere {height:300px;}
Это для всего остального:
div>div .classNameHere {min-height:300px; height:auto;}
Между прочим, если вам нужно изолировать IE6 с помощью CSS, это хороший способ сделать это, так как он не поддерживает дочерние селекторы.
Я стараюсь не поддерживать IE6
Я использую:
- «Reset.css», чтобы минимизировать разницу между вычисляемыми стилями CSS браузера по умолчанию (например, YUI reset.css)
- условные комментарии, чтобы поместить в область действия дополнительный файл css;) (например, ./ieFix. css)
- W3C Validator, чтобы определить, вызвана ли разница в рендеринге плохой вложенностью или это просто IE;)
- если это не удается, jQuery очень помогает;)
Честно говоря, в последнее время я редко занимаюсь проблемами IE6. Мой дизайн-процесс прост:
- Сбросить поля/отступы для всего. Я имею в виду все.
- Проверяйте макет моей страницы каждые несколько минут. Делает одно нажатие на F5.
- Если какое-либо изменение ломает страницу, я останавливаю все и оцениваю изменение.
- Если желаемый метод не может быть использован, я изучаю альтернативные методы, за исключением «хаков».
- Я проверяю разметку и css. И всегда используйте XHTML 1.0 Strict.
- Сначала я убеждаюсь, что мой сайт работает без Javascript, а затем использую jQuery.
Эти базовые методы избавили меня от необходимости много работать с проблемами IE6 на протяжении многих лет. Единственная проблема, из-за которой я все еще расстраиваюсь, — это поддержка IE6 для PNG24 с прозрачностью, но IEPNGFix позаботится об этом — обычно не нарушая мои макеты.
Это может быть мнение глупого человека:
Великие разработчики не находят жалоб, они находят решения.
Я согласен с ответами, которые говорят о процессе, включающем в себя чистый код, условные комментарии, поддержание ie6 в хорошем, но не идеальном состоянии и т. д. и т. д. Но это очень осторожный, мало-помалу процесс, который все еще, в глубине души, занимает довольно много времени, когда на самом деле это все для одного браузера. Я не хочу отмечать любой ответ как ответ, потому что все ответы говорят о существующих методах, с которыми я знаком. Возможно, на мой вопрос ответили «Нет» :) потому что, по сути, я искал структуру, которая означала, что вам даже не нужно было беспокоиться о нюансах ie6, просто кодировать современным способом - я думал, что js ie7/8 будет делать но даже сегодня я понимаю, что минимальная высота не фиксируется!! В любом случае спасибо за ответы - это помогло еще раз подтвердить, что мой подход по-прежнему остается статус-кво, и я использую свое время настолько эффективно, насколько могу.
Недавно я ввел политику в отношении IE6, в основном, пока это не ломает сайт в IE6, не тратьте на это время.
Я не думаю, ИМХО, что IE6 все еще достаточно полезен, чтобы моя компания продолжала тратить деньги на исправление небольших проблем с ним.
Вот краткий пример данных с нескольких сайтов, на которых моя компания отслеживает данные. Это комбинация последних данных (сегодня) и некоторых данных примерно 1 года назад, поэтому процент IE6 выше, чем мы на самом деле получаем сейчас, и даже тогда все, кроме 3% посещений, относятся к 1 из 8 сайтов. включены в данные.
http://unkwndesign.com/browerUsage.png
**Примечание. построен на webkit, но его номера не включены в webkit, просто чтобы показать, как быстро он вырос. Общий процент равен 100,5% из-за округления.
Я не думаю, что когда-либо существовал стандарт относительно того, какой браузер вы можете или не можете игнорировать. Это зависит от организации или аудитории в случае вашего стартапа. Любой JS, который вы пишете, должен «изящно деградировать», но для того, чтобы убедиться, что это действительно происходит, иногда требуется некоторая хитрость.
На самом деле есть только одно «исправление» для проблем IE, которое должно помочь облегчить его самоубийство. Единственный найденный мной способ помочь IE покончить жизнь самоубийством — это просвещать своих посетителей. Это можно сделать, прослушивая браузер, и если IE обнаружен, вы отображаете баннер «Помогите обновить Интернет».
Что-то вроде GMail...
Мы делаем это на ra-ajax и сложены (посетите сайт с любой версией IE)
Сначала создайте для Firefox, опыт элементов дизайна nuke или downgrade говорит вам, что IE6 не может справиться с самого начала, и вы не тратите больше времени, чем гарантирует спецификация клиента.
Опыт работы с TBH — мера № 1 для предотвращения проблем с IE6
- Заставьте его работать в Firefox;
- Проверьте, выглядит и работает ли он так же в IE7;
- Проверьте, работает ли он в IE6 (потому что этого достаточно).
- Если вы не можете сделать макет с помощью простого CSS (без сумасшедшего относительного + абсолютного позиционирования или float:after fixes), тогда просто сделайте это с таблицами;
- Поместите DOCTYPE, чтобы заставить браузер перейти в режим соответствия (а не причуды);
- Сведите к минимуму проблемы с блочной моделью, сведя к минимуму использование содержащихся границ (или задав невидимые границы другим подобным элементам) и вложенные элементы, чтобы свести к минимуму комбинации отступов/полей/границы, которые просто вызовут у вас огорчение;
- Не пытайтесь заставить CSS-меню работать во всех браузерах. Это уже не 2003 год. Просто используйте Javascript (например, jQuery/superfish).
- Используйте :hover только для ссылок. При необходимости измените их с помощью display: block.
- Убейте ВСЕ стили по умолчанию перед запуском.
- Добавьте к этому сценарий Дина Эдвардса.
- Если проблемы сохраняются, сообщите пользователям об обновлении.
- Если IE6 жизненно важен, используйте таблицу стилей IE, которая удаляет все, что не работает, и заменяет их менее сложными стилями.
- jQuery :hover и т. д. на .hover, input[type=submit] на input.submit и т. д. Иногда помогает и со старыми версиями FF и Opera.
Вчера решил больше не поддерживать. Существует движение, пытающееся убить IE 6.
Благодаря условным комментариям IE легко показать сообщение только для этих пользователей.
Я создаю его для Chrome, затем оптимизирую для Firefox, в большинстве случаев это просто мелочи, затем я перехожу в IE 8, а затем перехожу в IE 7, так как к тому времени я устраню большинство ошибок. После IE 7 я бегло взглянул на Opera и на сегодня закончил. Кого больше волнует IE 6?
Вы жалуетесь производителям Intel, что процессор не подходит к вашему комодору? Есть технологические достижения, и я думаю, что IE 6 должен быть убит, лучший способ сделать это — сказать пользователю, что он должен обновиться, и пусть сайт выглядит как дерьмо, это единственный способ заставить их переключиться. Некоторые в конце концов спросят своих детей, почему интернет не работает, и тогда сын установит все обновления, и мама или папа снова могут быть счастливы.
Мой ответ вкратце: больше никакой оптимизации, как я с этим справляюсь.
Поощряя пользователей переходить на что-то — НИЧЕГО — лучшее.