/*
* 获取指定类别选择器的所以样式值
* @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,
// 末尾加的'\\s*($|,)'是为了防止name为cls的子串,如:cls为test01-test,而name为test01.
regStr = name.replace(/\./, '\\.').replace(/\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)) {
// IE8/IE7的样式是rule.style.cssText
var newStr = /{.*?}/.exec(rule.cssText || '{' + rule.style.cssText + '}');
newStr = newStr===null ? '' : newStr[0];
// 去重
if(-1 == ret.indexOf(newStr)) {
ret += newStr;
}
}
}
} catch(e) {
// Do nothing
}
}
// 过滤掉大括号
return ret.replace(/{|}/g,'');
}