БлогNot. Никогда не пишите по спецификациям...

Никогда не пишите по спецификациям...

Вывесил вчера в ночь очередной ГС, так как пишу в Курице С Ведром "Хроме", а для страха проверяю всё в ИЕ, лёг спать с чистой совестью, убедившись, что там и там работает... лишь днём случайно обнаружил, к своему ужасу, что в "Опере" и "Файрфоксе" текст не переносится внутри ячейки таблицы <TD> и разъезжается примерно на 3000 пикселов в ширину, и в итоге выглядит это примерно так (GIFка, качество снижено):

Глюк с разъезжающимся текстом в Opera и Firefox
Глюк с разъезжающимся текстом в Opera и Firefox

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

Оказалось, в основном титуле сайта стояло хбз откуда содранное честно написанное

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML lang=ru-ru xml:lang="ru-ru" xmlns="http://www.w3.org/1999/xhtml">

а замена его на "неправильное"

<HTML>

немедленно срулила и привела шаблон в порядок :)

Совсем без спецификации возникла другая проблема - перестала работать JCarousel в Internet Explorer - просто выводила все картинки подряд одной лентой... ошибок при этом - никаких.

Наконец остановился на

<!--[if IE]>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<![endif]-->

(код писать одной строкой) - и всё как бы заработало... просто теперь текст "разъезжался" в ИЕ, раз я отключил для него режим совместимости :) В итоге, поскольку все "разъезжающиеся" страницы передавались параметром с именем $p, код стал выглядеть так:

if (empty($p)) {
 echo '<!--[if IE]>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <![endif]-->';
}

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

Вывод - больше пейте и не верьте документации :) Ну или когда появится время - привести статические страницы в нормальный вид.

P.S. Ну а на самом деле всё оказалось ещё проще - в код вкрался атрибут nowrap на ячейку таблицы с контентом. Вот текст и растягивался в ряде браузеров, слишком буквально понимающих код :)

17.12.2011, 23:54 [10510 просмотров]


теги: html браузеры ошибка ie php алкоголь вебдезигн

К этой статье пока нет комментариев, Ваш будет первым