Почему IE7 не распознает вызовы классов для внешней таблицы стилей, но распознает встроенные стили?

При использовании IE8 для просмотра IE7 с помощью функции режима браузера инструмента разработчика у меня возникает странная повторяющаяся проблема с CSS. Когда я вношу изменения во внешнюю таблицу стилей, а затем ссылаюсь на этот класс в HTML, IE7 вообще не распознает его. Однако если я включу тот же стиль в строку, IE7 подчинится ему. Кто-нибудь слышал об этом раньше? Вот простой пример, чтобы помочь проиллюстрировать то, что я говорю:

Внешняя таблица стилей:

.bold {
    font-weight:bold;
}

Вызов в HTML:

<p class="bold">My paragraph here</p>

Никакие изменения не вступят в силу в IE7, хотя во всех других браузерах все в порядке.

Однако, если я сделаю это:

<p style="font-weight:bold;">My paragraph here</p>

IE7 кажется счастливым. Какая разница? Мне действительно нужно вносить изменения в CSS таким образом, или есть другой обходной путь?

Я в недоумении, в чем может быть дело. Я не знаю, имеет ли режим браузера инструмента разработчика особенность и работает ли он не так, как в реальной версии IE7, или это что-то совершенно другое. Я использую IE8 (я не могу перейти на IE9 на этом правительственном компьютере), но я слышал, что проблема сохраняется и с моими изменениями в режиме браузера IE9 в IE7.

Мы используем ColdFusion для генерации HTML, используя тип документа HTML5 (), и я добавил параметр временной метки к двум ссылкам на внешние таблицы стилей, поэтому браузеру приходится каждый раз получать новую копию.

Любая помощь с этой загадкой будет очень признательна - спасибо!

====== Для @Stano или всех, кто заинтересован в воссоздании точной проблемы, вот ее урезанная версия: https://docs.google.com/open?id=0B02DZPpIlMwGSk1VZHRDUHNCTkU (можно нажать "Файл" > "Загрузить", чтобы получить архив). Обратите внимание, что в IE7 «Фотограф» работает нормально, потому что у него есть встроенные стили, но другие ничего не улавливают.


person monalisa717    schedule 31.07.2012    source источник
comment
Есть шанс, что у вас в голове есть ссылки на более чем 31 таблицу стилей? IE будет игнорировать все листы после этого номера, и вы будете рвать на себе волосы, пытаясь понять, почему ваши стили игнорируются.   -  person JGrubb    schedule 31.07.2012
comment
Попробуйте на IETester IE7. IE8 в режиме IE7 не равен IE7.   -  person Rustam    schedule 31.07.2012
comment
Может ли он быть закэширован? Вы пробовали очистить кеш браузера и попробовать еще раз?   -  person Yuriy Galanter    schedule 31.07.2012
comment
Игнорируются все стили или только определенные? И работает ли он без параметра timestamp? А что, если вы поместите стили в блок <style> в заголовке HTML?   -  person Mr Lister    schedule 31.07.2012
comment
Используете ли вы какой-либо тип сброса CSS или условные комментарии IE? Может что-то где-то перезаписывает.   -  person Kris Hollenbeck    schedule 31.07.2012
comment
@JGrubb нет - всего 3 внешних таблицы стилей   -  person monalisa717    schedule 31.07.2012
comment
@Rustam, спасибо - я слышал об этом инструменте, но сначала мне нужно убедиться, что проблема именно в этом, потому что мне нужно заполнить формы и пройти через кучу бюрократических проволочек, чтобы установить его на правительственный компьютер. Хотя хотелось бы попробовать! До этого может дойти.   -  person monalisa717    schedule 31.07.2012
comment
@Trekstuff параметр в справочнике должен исправить эту проблему (css-tricks.com/can-we-prevent-css-caching), но у меня есть настройки IE8, чтобы проверять наличие более новой версии сохраненных страниц каждый раз, когда я посещаю веб-страницу.   -  person monalisa717    schedule 31.07.2012
comment
@KrisHollenbeck, это хорошая идея - я использую сброс и условие Blueprint (blueprintcss.org) [if lt IE8]. .. Я прокомментирую их и дам вам знать, что происходит.   -  person monalisa717    schedule 31.07.2012
comment
@KrisHollenbeck кажется, что комментирование этих двух ссылок не имеет значения. Я добился некоторого успеха, сославшись на новую таблицу стилей, в которой был только мой новый класс. IE7 нравится это по какой-то причине ... возможно, в режиме инструмента разработчика происходит какое-то кэширование.   -  person monalisa717    schedule 31.07.2012
comment
@Stano - IE7 будет подчиняться большинству вызовов классов, особенно если это первая загрузка страницы. Если вы сейчас добавите изменение в ietest.css и обновите его, примет ли IE7 ваше изменение?   -  person monalisa717    schedule 31.07.2012
comment
@user1411056 user1411056 Да, на локальном хосте все работало нормально. Вы также можете протестировать это, вот оба файла (html+css) заархивированы: ulozto.net/xSJZ6dE /ietest-zip   -  person Stano    schedule 31.07.2012
comment
@Стано - спасибо, ты прав. Это выглядит хорошо в режиме IE7 из IE8. Даже добавление другого класса в ваш файл css вступило в силу. Возможно, какой-то другой CSS взаимодействует, чтобы вызвать эту головную боль.   -  person monalisa717    schedule 31.07.2012
comment
@Stano Интересно, что при просмотре страницы примера с инструментами разработчика IE вы можете щелкнуть элемент p на странице и в правой части окна инструментов разработчика на вкладке «Стиль», ваш класс сразу появится. Чего нельзя сказать о моей странице. Класс вообще не отображается на вкладке «Стиль».   -  person monalisa717    schedule 31.07.2012
comment
@ user1411056 Хорошо, тогда у вас есть еще одно осложнение. Извините, я не знаю, как решить вашу проблему. Я думаю, что некоторые советы Закари могут решить проблему. Удачи!   -  person Stano    schedule 01.08.2012
comment
@Stano отредактируйте ссылку выше, если вам все еще интересно. Я уверен, что это сложно, когда мое описание не сделало это, чтобы вы могли воссоздать проблему - извините за это!   -  person monalisa717    schedule 01.08.2012
comment
Вы правы, в IE7 это не жирно.   -  person Stano    schedule 01.08.2012


Ответы (1)


Что касается ваших комментариев, вы правы, говоря, что это может быть проблема с кэшированием, но это также может быть проблема с этой таблицей стилей (хотя это не похоже на то), другой таблицей стилей или недопустимым HTML.

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

Я упоминаю об этом, потому что если у вас неверный HTML (отсутствует конечный тег, отсутствует стрелка и т. д.), он может делать всевозможные странные вещи. Несколько дней назад это помогло мне решить проблему, когда неуместный тег фактически приводил к зацикливанию моего скрипта на одной из моих страниц.

Уделите немного времени и проверьте свой HTML с помощью валидатора разметки W3C.

person Zachary Kniebel    schedule 31.07.2012
comment
Спасибо за разъяснения. Кажется, я не могу получить страницу для проверки. Валидатору не понравились 3 метатега, поэтому я удалил их, но они продолжают появляться как ошибки в валидаторе, хотя их больше нет на странице. Мне сегодня не везет! Несмотря на то, что я удалил эти строки, IE7 выглядит так же. - person monalisa717; 31.07.2012
comment
дайте валидатору несколько минут, а затем снова запустите его. Он может кэшировать (смеется, кэш сегодня — настоящая боль для всех, кажется) - person Zachary Kniebel; 31.07.2012
comment
Наконец-то я получил его для проверки, но это не решило проблему. Конечно, в любом случае кажется хорошей идеей проверить. Спасибо. - person monalisa717; 01.08.2012
comment
да, жаль, что не сделал этого. - person Zachary Kniebel; 01.08.2012