Создание динамической встроенной таблицы стилей
Каков наилучший способ создания динамических тегов стиля с помощью js и/или jQuery?
Я пробовал это:
var style= jQuery('<style>').text('.test{}');
Это работает в FF, но появляется ошибка в IE7 "Неожиданный вызов метода или доступа к свойствам".
var style = document.createElement('style');
style.innerHTML='.test{}';
Дает ту же ошибку. Не имеет значения, использую ли я innerHTML
или innerText
. Странно то, что перед добавлением тега стиля он показывает ошибку.
Я подозреваю, что cssText
имеет к этому какое-то отношение, но я не уверен, как это сделать.
Ответы
Ответ 1
Добавление текста в таблицу стилей, которая будет отображаться правильно, нуждается в другом синтаксисе в IE, чем в других браузерах.
Вы можете использовать некоторые из них с помощью jquery
document.addStyle= function(str, hoo, med){
var el= document.createElement('style');
el.type= "text/css";
el.media= med || 'screen';
if(hoo) el.title= hoo;
if(el.styleSheet) el.styleSheet.cssText= str;//IE only
else el.appendChild(document.createTextNode(str));
return document.getElementsByTagName('head')[0].appendChild(el);
}
Ответ 2
Этот метод генерации правил css динамически будет ошибочным, даже если он сработает. IE будет просто игнорировать элементы <style>
после того, как более 30 были вставлены (см. http://support.microsoft.com/kb/262161).
Вы можете использовать плагин jquery.rule для управления правилами CSS с помощью javascript.
Ответ 3
Я бы посмотрел на Javascript document.styleSheets
и метод addRule()
.
(Отказ от ответственности: я никогда не использовал это сам)