Обойти две ошибки макета IE6 - PullRequest
3 голосов
/ 25 ноября 2008

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

Вот минимизированный тестовый пример . Поведение в Firefox / Safari является желаемым / правильным. IE7 неизвестен, так как сейчас у меня нет к нему доступа.

Первая ошибка: #content имеет переполнение: auto и содержит относительно позиционированный div. IE6 неправильно придает относительно позиционированному div «фиксированный» вид. Обходной путь: Установите положение: относительно # содержимого.

Вторая ошибка: на странице иногда отображается модальное всплывающее окно. Z-индекс на всплывающем и заднем фоне настроен очень высоко, чтобы предотвратить взаимодействие с ними. Это работает нормально до тех пор, пока я не установлю положение: относительное на #content, что заставляет IE6 полностью трактовать свойство z-index .

Как я могу заставить этих багов хорошо играть друг с другом? (Примечание: удаленное форматирование жестких дисков пользователей, все еще работающих с IE6, не вариант, к моему большому разочарованию.)

Редактировать: Вот второй тестовый пример , который показывает, что происходит, когда я применяю позицию: относительно содержимого. Первая ошибка («фиксированный» внешний вид # content-header) устранена, но она вызывает ошибку z-index и портит модальный фон.

Ответы [ 4 ]

0 голосов
/ 09 декабря 2008

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

В итоге мы использовали плагин bgiframe jquery (http://plugins.jquery.com/project/bgiframe).. Он реализует в библиотеке технику iframe «щит»). Я полагаю, что для пользователей IE6 требуется больше штрафов за загрузку библиотеки (что не не так уж много), так что мне не нужно сходить с ума по поводу того, что IE6 bleedthru стоит того.

P.S. Я думаю, что веб-разработчики всего мира должны начать коллективный иск, чтобы заставить Microsoft ether предложить эквивалент Firebug для IE6 и IE7, убедиться, что все экземпляры IE6 и IE7 обновлены до стандартов, или удалить все версии IE6 и IE7 из все компьютеры в Интернете, или помогите всем веб-разработчикам, заплатив 1 миллион долларов США за их боль и страдания!

0 голосов
/ 26 ноября 2008

Существует множество реализаций того, как избежать серьезных проблем с соответствием ie6 (и ниже). Единственное, что действительно сработало для меня (в значительной степени даже), - это решение Дина Эдварда.

Попробуйте вставить следующую строку в основной заголовок:

<!--[if lt IE 8]><script src="http://ie7-js.googlecode.com/svn/version/2.0(beta)/IE7.js" type="text/javascript"></script><![endif]-->

- и посмотрите, как это будет происходить (и с чем вам еще нужно справиться, поскольку, вероятно, это не все исправит).

Размер скрипта составляет всего 30 КБ и будет загружен только в ie6 и ie7.

URL кода Google (очевидно) http://code.google.com/p/ie7-js/

0 голосов
/ 28 ноября 2008

Реализуйте что-то похожее на Ra-Ajax.org (подсказка, зайдите на сайт с IE;)

Серьезно, даже prototype.js и 37signals перестали поддерживать IE6 сейчас, я думаю, что пора двигаться дальше ...

0 голосов
/ 26 ноября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...