1

私の Chrome 拡張機能では、有効な Gmail メッセージ URL に一致するパターンが必要です。例:

https://mail.google.com/mail/u/0/?shva=1#inbox/140acd877b64109b

私が試したmanifest.jsonのは次のとおりです。

"content_scripts": [ {
        "matches":      ["*://*.mail.google.com/mail/u/0/?shva=1#inbox/*"],
        "css":          ["default.css"]
    } ]

ただし、上記の URL パターンで Gmail メッセージにアクセスすると、カスタム スタイルシートが適用されません。

適用されない理由はありますか?

のみを使用する"matches": ["*://*.mail.google.com"]と、機能します。それでも、スタイルシートを受信トレイ ページにも適用したくありません。したがって、単一のメッセージ ページのみをキャッチするパターンを探しています。

4

1 に答える 1

3

ロケーション フラグメント ( #...) は、一致パターンでは常に無視されます。前回チェックしたとき、フィールドのクエリ文字列も無視され"css"ます。

目的の効果を得るには、スタイルシートを に挿入し"*://*.mail.google.com/*"、コンテンツ スクリプトを使用して URL の変更を検出します。例えば:

のフラグメントmanifest.json:

"content_scripts": [ {
    "matches":      ["*://*.mail.google.com/*"],
    "css":          ["default.css"],
    "js":           ["style-toggler.js"]
} ]

の例default.css:

.turn-on-my-style img {
    visibility: hidden;
}

CSS セレクターのプレフィックスに多大な労力がかかる場合は、LESSなどの CSS プリプロセッサーを使用することをお勧めします。

style-toggler.js:

function hashCheck() {
    if (/^#inbox\/.*/.test(location.hash)) {
        document.documentElement.classList.add('turn-on-my-style');
    } else {
        document.documentElement.classList.remove('turn-on-my-style');
    }
}
window.addEventListener('hashchange', hashCheck);
hashCheck();
于 2013-08-24T15:58:34.230 に答える