3

我正在尝试为论坛制作一个小小的 chrome 扩展,但我只希望它在论坛的某个区域工作。

问题是我不能只做 "matches": ["subforum"] 因为该论坛中的线程无法通过 URL 区分它们所在的子论坛。

子论坛有自己的 css 样式表,所以我想我是否可以快速检查一下当前样式表是否与 subforum.css 匹配它会正常工作。

基本上我只需要检查样式表的名称,如果不可能,如何准确检查当前样式表是否包含某个单词或元素或其他内容。

4

2 回答 2

1

您可以遍历样式表本身和 @import 规则

function sheetExists(name){
    var s = document.styleSheets, i = s.length, j = 0;
    while(i-->0){
        if(s[i].href !== null){
            if(s[i].href.indexOf(name) !== -1) return true;
        }
        while(j < s[i].cssRules.length && s[i].cssRules[j].type === 3){
            if(s[i].cssRules[j].href !== null){
                if(s[i].cssRules[j].href.indexOf(name) !== -1) return true;
            }
            j++;
        }
        j = 0;
    }
    return false;
}
sheetExists('subforum.css');
于 2012-08-26T01:58:38.440 回答
0

使用属性包含选择器

if ($('link[href*="myStylesheet.css"]').length) {
    //stylesheet containing "myStylesheet.css" in the href attribute was found
} else {
    //not found
}

小提琴

当然,如果您提供完整的确切属性值,您也可以使用属性等于选择器。

if ($('link[href="path/To/myStylesheet.css"]').length) {
    //stylesheet with link="myStylesheet.css" found, do stuff
}

小提琴

于 2012-08-26T01:51:41.280 回答