Внешний Css

  • Автор темы kreasl
  • Дата начала
K

kreasl

Гость
#1
Здравствуйте.

Возник такой вопрос: на страницу загружается внешний CSS и в процессе работы скрипта нужно определить значение color для класса highlite.
Были такие варианты:

Код:
tmpDiv = document.createElement("DIV");
tmpDiv.className = "highlite";
tmpDiv.style.display = "none";
document.getElementById("gb_body").appendChild(tmpDiv);
highliteColor = tmpDiv.currentStyle ? tmpDiv.currentStyle.color : tmpDiv.style.color;
document.getElementById("gb_body").removeChild(tmpDiv);
Код:
var ruls = document.styleSheets[0].rules ? document.styleSheets[0].rules : document.styleSheets[0].cssRules;
for (i=0;i<ruls.length;i++)
if (ruls[i].selectorText.indexOf("highlite") + 1){
highliteColor = ruls[i].style.color;
i = ruls.length;
}
Оба либо работают не во всех браузерах, либо не работают :rolleyes:.

А есть ли ещё способы?
 
S

sir Aurum

Гость
#2
Пользуйся функцией, она очень полезная B)

Код:
function getElementComputedStyle(elem, prop){
if(typeof elem != "object"){ 
elem = document.getElementById(elem);
}	

// external stylesheet for Mozilla, Opera 7+ and Safari 1.3+
if(document.defaultView && document.defaultView.getComputedStyle){
if (prop.match(/[A-Z]/)) prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase();
return document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop);
}

// external stylesheet for Explorer and Opera 9
if (elem.currentStyle){
var i;
while ((i=prop.indexOf("-"))!=-1) prop = prop.substr(0, i) + prop.substr(i+1,1).toUpperCase() + prop.substr(i+2);
return elem.currentStyle[prop];
}
return "";
};
 
K

kreasl

Гость
#3
Давно сюда не заглядывал: решено было пойти обходным путём, но за функцию спасибо, работает отлично и думаю не раз пригодится :)