Добавление оператора @import в динамическую таблицу стилей для IE7+

У меня проблема с добавлением динамического элемента стиля с помощью операторов @import для IE. Попробуй это:

var string = '@import url(test.css)';
var style = document.createElement('style');

if (style.styleSheet) { // IE
    style.styleSheet.cssText = string;
} else {
    var cssText = document.createTextNode(string);
    style.appendChild(cssText);
}

document.getElementsByTagName('head')[0].appendChild(style);

Это работает для FF/Chrome, но не для IE. Кажется, признают style.styleSheets.imports, но он не будет применять импортированную таблицу стилей. Это ошибка или ограничение?

1 ответ

Решение

Многие старые браузеры не могут обрабатывать различные формы директивы @import, это можно использовать, чтобы скрыть css от них. Проверьте http://www.w3development.de/css/hide_css_from_browsers/import/ для деталей.

@import директивы должны быть первыми в таблице стилей, иначе они будут игнорироваться. Однако IE не игнорирует неуместные @import директивы.

Редактировать: см. Метод addImport для внедрения таблиц стилей в IE.

Другие вопросы по тегам