3

フォーラム用に小さなChrome拡張機能を作成しようとしていますが、フォーラムの特定の領域でのみ機能させたいと考えています。

問題は、「一致」を実行できないことです。["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
}

フィドル

もちろん、完全に正確な属性値を指定する場合は、 AttributeEqualsSelectorを使用することもできます。

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

フィドル

于 2012-08-26T01:51:41.280 に答える