IE7 и IE8 случайно не могут загрузить внешний скрипт

Я динамически добавляю элементов в заголовок, как только DOM готова. Однако я получаю противоречивые результаты в IE8 и IE7 (все остальные браузеры в порядке).

Каждые несколько раз страница загружается (кэшированная или некэшированная) IE 7/8 будет удалять несколько правил CSS в таблицах стилей. 1 или 2 из моих динамических таблиц стилей не загружаются. Это всегда одни и те же 1 или 2 таблицы стилей, которые IE обычно игнорирует - , даже несмотря на то, что панель инструментов разработчика показывает их как добавленные в заголовок! .

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

На моем месте у меня нет возможности писать код из (ограничение CMS) - я могу вставлять только динамически из тела, что может быть проблемой.

ОБНОВЛЕНО: Это код, который я использую (расположенный в ) для вставки таблиц стилей:

document.observe('dom:loaded', function() { // Using Prototype.js

// Add stylesheets
// addStylesheet('cite.css', 'head'); // Contains no webfont/@font-face rules
// addStylesheet('type.css', 'head'); // Contains webfont family name references*
// addStylesheet('flex.css', 'head'); // Responsive rules with @media queries
// addStylesheet('anm8.css', 'head'); // Some minor positional CSS for home page
// addStylesheet('gothic-cite.css', 'head'); // *Contains @font-face config
// addStylesheet('stag-cite.css', 'head'); // *Contains @font-face config

addStylesheet('all.css', 'head'); // Contains ALL content from above in 1 file

function addStylesheet(cssname, pos2)
{
    var th2 = document.getElementsByTagName(pos2)[0];
    var s2 = document.createElement('link');
    s2.setAttribute('type', 'text/css');
    s2.setAttribute('href', cssname);
    s2.setAttribute('media', 'screen');
    s2.setAttribute('rel', 'stylesheet');
    th2.appendChild(s2);
}

});

Как было предложено, даже когда я объединил все правила в одну таблицу стилей (которая Ненавижу это делать) IE 7/8 продолжает переключаться, как описано с некоторыми правилами, и страница выглядит иначе.

В качестве дополнительной проверки я также удалил все @ font-face и сослался на font-family: "webfont-name" правила из таблиц стилей, и продолжил то же самое поведение. Следовательно, мы можем исключить проблему веб-шрифтов .

Вы можете увидеть аномалии, посетив следующую страницу с IE8 и несколько раз обновив / щелкнув навигацию. Кажется совершенно случайным, когда IE8 отбрасывает эти стили. Однако на странице встроенного элемента управления все стили каждый раз загружаются правильно.

Живая страница (с проблемами)

https://www.eiseverywhere.com/ehome/index.php?eventid=31648&tabid=50283

  1. CMS на основе PHP распечатывает XHTML при загрузке страницы (содержимое шаблона смешанное с пользовательским контентом)
  2. Prototype.js загружается и инициализируется по умолчанию при загрузке страницы
  3. Собственные скрипты CMS .js файл анализируется при загрузке страницы
  4. Мои сценарии запускаются при загрузке DOM, по сути заменяя body.innerHTML CMS fluff-HTML только тем HTML, который я хочу, затем добавляет таблицы стилей в .
  5. Для lte IE 8 плагины расширения CSS (selectivizr.js, html5.js и ie-media-query.js) загружаются в с помощью условного Комментарии. Не уверен, ждут ли они DOM: loaded ...
  6. Редактор CMS WYSIWYG преобразует все символы возврата каретки в пустые

    теги , в результате в таких элементах, как
    , содержащихся внутри сломанных тегов

    , и дополнительные теги

    , создаваемые там, где ожидается пробел. Только lt IE 8 , похоже, подавился этим, поэтому я добавил следующие правила CSS, чтобы исправить это:

    : not (.ie7) p {display: none; }
    .ie7 p {display: inline; }
    статья p {display: block! important; }
    
  7. Я должен отметить, что внешние таблицы стилей здесь извлекаются из того же домена, но каждый раз, когда они загружаются повторно, для файла создается новый URL-адрес на основе MD5. Я не уверен, доступны ли предыдущие версии файла (или предыдущие файлы) по их предыдущим URL-адресам. Однако это не может быть проблемой, поскольку вновь созданная таблица стилей all.css по-прежнему отбрасывает правила, которые были в файле с самого начала.

Контрольная страница (работает безупречно)

http://client.clevelanddesign.com/CD/IDG/CITE/home.html

  1. Чистый документ XHTML - без PHP.
  2. Для IE8 и ниже используется jQuery, а не Prototype.
  3. Все ресурсы (таблицы стилей) присутствуют в при загрузке страницы - без динамической вставки
  4. Для lte IE 8 , плагины расширения CSS (selectivizr.js, html5) .js,и ie-media-query.js) инициализируются изначально.

Перефразированный вопрос:

Какое из этих различий, по вашему мнению, может приводить к сбою в IE 7/8 стилей при загрузке на странице Live? Я лично подозреваю, что это либо проблема состояния гонки, либо Prototype.js и другие сценарии CMS все портят (к сожалению, удалить их со страницы невозможно).

PS: Я уже пробовал использовать функцию IE createStylsheet () , но безрезультатно.

ОБНОВЛЕНИЕ - Скриншоты работы / не работы в IE8

IE8: код DOM при правильной загрузке: IE8: DOM code when loaded correctly

IE8: код DOM, когда НЕ загружен правильно: IE8: DOM code when NOT loaded correctly

7
задан atwixtor 5 January 2012 в 21:25
поделиться