2

このメソッドを使用して指定されたURLにCSSを挿入する方法を知っていますhttps://stackoverflow.com/a/7619104/1157283

ただし、ブラウザのアクションがクリックされたときにのみこれらのページに挿入したい場合はどうすればよいですか?プログラムによるインジェクションhttp://developer.chrome.com/extensions/content_scripts.html#piについて読んでいたので、CSSをインジェクトするすべてのページのtabIDを取得する必要があるようです。それらをループして、各tabIDのCSSを挿入しますか?

これは必要なことですか、それとも私はここで完全にマークから外れていますか?私が提案していることよりも簡単にできるはずです。ありがとう!

4

1 に答える 1

3

私の友人を恐れないでください、ここにあなたの問題に対する適切な解決策があります。

マニフェスト .jsoncssを挿入するURLと、permissionsディレクティブのタブを指定します。

"permissions":[
  "tabs",
  "https://google.com.mx/*"
],

background.js 適切なonClickリスナーを追加します。

chrome.browserAction.onClicked.addListener(browserListener);

そしてリスナーはこんな感じ

var browserListener = function(tab) {
    var regexPage = new RegExp(/https:\/\/www.google.com.mx\//); // We use a regular expresion to check which page was given.
    var match = regexPage.exec(tab.url); // We then check if the given page matches our expression.
    // If it matches and the status of the tab is complete...
    if(match && tab.status === 'complete') {
        //We insert the css
        chrome.tabs.insertCSS(tab.id, {
            file: "css/test.css"
        });
    }
}

https://*/*パーミッションディレクティブですべてのページにパーミッションを要求する場合は、一致するセクションをスキップできます。これにより、マッチングのみでトリガーされるコンテンツスクリプトよりも柔軟性が高くなります。他のCSSと同様に、変更を確認するには、ページのルールをオーバーライドする適切なルールを指定する必要があることを覚えておいてください。これは、ほとんどの場合、important!cssでタグを使用することを意味します。

于 2012-12-24T23:16:42.310 に答える