跨浏览器(现代浏览器)操纵CSSStyleRule

时间:2012-12-31 15:43:30

标签: javascript css dom-manipulation

根据MDN(https://developer.mozilla.org/en-US/docs/DOM/CSSStyleRule)CSSStyleRule对象的style属性是只读的。有没有办法能够在现代浏览器中可靠地修改其样式属性(主要是chrome / safari和firefox,但IE9也会很好)?

半相关问题,但有没有办法访问样式规则内的注释(编辑:并知道评论“属于”哪个规则/选择器)?即对于这条规则:

.my-rule {
    /* A Comment */
    color: blue;
}

我希望能够通过javascript检索/* A Comment */

1 个答案:

答案 0 :(得分:1)

以下是UPDATED DEMO

JavaScript

var styles = document.getElementsByTagName('style')[0].textContent;
var comments =  styles.match(/\/\*.*\*\//g);
console.log(comments);

<强>更新

由于OP需要与评论建立关系,请改用此代码:

var styles = document.getElementsByTagName('style')[0].textContent;
var objItems = {};
var arrItems = styles.split('}');
arrItems.pop();

for (var i = 0; i < arrItems.length; i++) {
    var grp = arrItems[i].split('{');
    objItems[$.trim(grp[0])] = arrItems[i].match(/\/\*.*\*\//g);
}

for(var i in objItems) {
      console.log(i + ': [ ' + objItems[i] + ' ]');
}