3

私はChrome拡張機能を構築しようとしてきましたが、残念ながら最終的に機能するようになったとき、特定のURLでのみアクティブにする必要があることに気付きましexclude_matchesexclude_globs. ただし、これら 2 つのオプションを CSS と組み合わせて使用​​すると Chrome にバグが発生し、機能しません。

特定のドメインにのみ CSS を挿入できる他の方法を誰かが知っているかどうか知りたいです (たくさん許可するのではなく、カップルから除外したいのですが)。Javascript を使用して既存の CSS の末尾に書き込むことができることは承知していますが、残念ながら、CSS の表示に 2 番目の遅れが生じています (これも明らかです)。

誰かがいくつかの代替案を思い付くことができれば、私は感謝しています. おそらく、パフォーマンスに影響を与えない Javascript を介して CSS ファイルを使用する方法がいくつかあります ( exclude_matchesJS ファイルで正常に動作するため、Javascript ではドメインの除外は必要ないことに注意してください)。ありとあらゆるアイデアが役に立ちますが、残念なことに、Google は 1 年以上も出回っていたバグを修正していません!

編集:プログラムによるインジェクションについて 1 つまたは 2 つの応答が得られると思うので、これがどのように機能するかは不明であるため、例としてこれらのリンクを使用します (後者は実装したくないリンクです)。誰かが例を投稿したい場合に備えて、CSS on)。

http://example.com/
http://example.com/random/
http://example.com/random/example/

ああ、Google の例ではボタンを使用して CSS を起動していることは知っていますが、ページの読み込み時に開始したいと思います。再度、感謝します!

4

1 に答える 1

1

このバグが解決されるまでは、一致するすべての URL のリストをマニフェストに作成するか、回避策としてinsertCSS API を使用してください。

コードサンプル #1

このサンプルは、ブラウザー アクション アイコンがクリックされるたびに現在のタブに css を挿入しdefault_popupます。マニフェストにがないことを確認してください。そうしないと、 onClicked イベントが発生しません。

//This even fires when ever a browser action is clicked
chrome.browserAction.onClicked.addListener(function (tab) {
    // This injects content.css into the current tab
    chrome.tabs.insertCSS(null, {
        file: {
            file: "content.css"
        },
        "all_frames": true //for all frames
    });
});

コードサンプル #2

タブ APIを利用して、一致するページ セットをフィルタリングし、CSS を挿入します。

任意の API を選択して CSS を挿入する

//Use an API to filter pages for a matching List
chrome.tabs.(SOME API HERE).addListener(function (RELATED DEFINITION) {
    //Inject CSS for a tab
    chrome.tabs.insertCSS(tabId, {
        file: {
            file: "content.css"
        }, //Any file to inject
        "all_frames": true //Inject to all Frames
    });
});

詳細については、こちらを参照してください。

参考文献

于 2012-12-29T04:35:29.563 に答える