Intertet Explorer CSS id bug
Рубрика: Development, JavaScript/Ajax | 22 September 2007, 16:55 |
Vadim Voituk
Пишем такой html-код:
[xml]<style>#_hello {color:#FF0000;}</style>
<div id=”_hello”>Это в IE не работает</div>[/xml]
Просматриваем в Firefox – все отлично – текст имеет красный цвет.
Открываем в IE 6 – стиль не применяется.
Изменяем “_hello” на “hello”:
[xml]<style>#hello {color:#FF0000;}</style>
<div id=”hello”>Это в IE работает</div>[/xml]
Работает и в FF и в IE.
Вывод: Internet Explorer не применяет стили на элементы, id которых начинается с подчеркивания “_”.
Найти в сети более или менее внятное описание или причины такого поведения мне не удалось.

Я спросил нашего веб-дизайнера Диму по этому вопросу. Вот его ответ:
Саша, спасибо за консультацию.
Насчет циферных id – это логично – ты же переменные тоже с цифры не называешь?.
Когда-то я уже “наступал” на проблемму цыферных ID, но только в wml – так половина телефонов выдавало ошибку, а половину “сьедала”. Отладка была жестокой и изнуряющей :)
читаем спецификацию html http://www.w3.org/TR/REC-html40/types.html#type-name – ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens (“-”), underscores (“_”), colons (“:”), and periods (“.”).
Юра, спасибо за ссылку
Это не баг, это фича.
Давно всем известный хак с подчеркиванием в IE
Bolzamo
>Это не баг, это фича.
>Давно всем известный хак с подчеркиванием в IE
да, но только когда писать #hello {_color:#FF0000;} так это хак , а когда #_hello то Netscape до 6 версии тоже не поймет, и даже такое #some_hello. понимаю что он динозаврик, но когда кастомер вдруг захотел поддержку Netscape на средине проекта , а все класси в CSS били написании ” .some_hello ” через “_” , то страничка в нем выглядела полностью без стилей.