Как добавить правила CSS в фрагмент документа через IE / FF? - PullRequest
0 голосов
/ 03 февраля 2012

Я пытаюсь создать и оформить фрагмент документа, но у меня возникли некоторые сложности.По иронии судьбы, IE это не моя проблема!

У меня есть это:

var newDom = document.createDocumentFragment();

newDom.appendChild(document.createElement("style"));
newDom.appendChild(document.createElement("div"));

if (newDom.childNodes[0].styleSheet){
    newDom.childNodes[0].styleSheet.cssText = "div{color:red;}";
    alert(newDom.childNodes[1].currentStyle.color);
}else{
    newDom.childNodes[0].appendChild(document.createTextNode("div{color:red;}"));
    alert(window.getComputedStyle(newDom.childNodes[1], null).color);
};

..., который предупреждает "красный" в IE7 / 8/9, но "rgb (0,0,0) "в FF3.0 / 4/10.И да, мне нужно будет знать, какие стили применяются, поэтому мне нужно будет читать из getComputedStyle в FF (или использовать какой-то другой метод, если он надежен).

Что я делаю не так?Это возможно?(Я бы подумал / надеюсь, что так ...)

Я пробовал много вещей - например, "newDom.styleSheets", который существует в IE, но не FF - безрезультатно.

Пожалуйста, помогите - спасибо!: D

1 Ответ

2 голосов
/ 04 февраля 2012

Читая в Интернете, кажется, что правильный синтаксис для изменения CSS с использованием Javascript:

obj.style.cssText = 'something';

В любом случае, похоже, это не решает проблему.Я бы предложил вам прочитать эту статью, которая может вам помочь: http://www.phpied.com/the-new-game-show-will-it-reflow/.

Я бы также предложил изменить подход и поместить ваш код CSS в уже существующую таблицу стилей CSS, связанную с таким классом, как .red-color, а затем просто класс для только что созданного div с setAttribute('class', 'red-color').Другой альтернативой может быть установка встроенного стиля, всегда с одной и той же функцией: setAttribute('style', 'color: red').

...