日期:2014-05-16 浏览次数:20507 次
/*
* 获取指定类别选择器的所以样式值
* @method getClassStyle
* @param {String} name 类别选择器的名字
* @param {Document} doc 指定的document
* @return {String} 该样式的cssText
*/
getClassStyle : function(name, doc) {
if(!name) {
return "";
}
name = name.replace(/^\s*/, "");// 去除前置空白
if(0!=name.indexOf('.') && 0!=name.indexOf('#')) {
name = '.' + name;
}
var doc = doc || document,
regStr = name.replace(/\./, '\\.').replace(/\b/,'\\b') + '\\b\\s*[,|{]',
reg = new RegExp(regStr, 'i');
ret = '';
for(var i=0; i<doc.styleSheets.length; i++) {
try {
var styleSheet = doc.styleSheets[i],
rules = styleSheet.cssRules || styleSheet.rules;
for(var j=0; j<rules.length; j++) {
var rule = rules[j],
cls = rule.selectorText;
// rule.selectorText可能不存在
if(cls && reg.test(cls)) {
var newStr = /{.*?}/.exec(rule.cssText);
newStr = newStr===null ? '' : newStr[0];
// 去重
if(-1 == ret.indexOf(newStr)) {
ret += newStr;
}
}
}
} catch(e) {
// Do nothing
}
}
// 过滤掉大括号
return ret.replace(/{|}/g,'');
}