62

私は単純な Chrome 拡張機能を試していますが、matches配列に値を指定する際に問題が発生していcontent_scriptsます。

{
  "name": "My Extension",
  "version": "1.0",
  "description": "My Extension Experiment",
  "browser_action": {
    "default_icon": "icon.png",
    "default_title": "Ext",
    "default_popup": "popup.html"
  },
  "content_scripts": {
    "matches": ["http://*"],
    "js": ["scripts.js"]
  }
}

この拡張機能を Chrome にロードしようとすると、次のメッセージが表示されます。

「C:\Users\foo\Desktop\Extensions\bar」から拡張機能を読み込めませんでした。
「content_scripts」の値が無効です。

しかし、自分の価値について何が「無効」なのかわかりません。私がやろうとしているのは、すべての URL を一致させることです。そのため、私の拡張機能は、scripts.jsそれが実行されている任意のページの DOM を ( 内の JavaScript を介して) 操作できます。私は何かを見逃していますか、これについてすべて間違っていますか、それとも何ですか?

アップデート

この質問を投稿した後、Google の例が私のものとは少し異なることに気付きました。そのため、構文を反映するようにコードを少し変更しました。

"content_scripts": [{
  "matches": ["http://*"],
  "js": ["scripts.js"]
}]

そうは言っても、拡張機能をロードしようとすると、まだ次のエラーが表示されます。

「C:\Users\foo\Desktop\Extensions\bar」から拡張機能を読み込めませんでした。
「content_scripts[0].matches[0]」の値が無効です。

4

6 に答える 6

83

content_scriptsフィールドの値を角括弧で囲む必要があります。

"content_scripts": [ {
  "matches": ["http://*"],
  "js": ["scripts.js"]
} ]

(詳細については、Chrome ドキュメントを参照してください)

ちなみに、 を使用http://*/*すると、すべての URL に対してより適切に一致し ( docshttps://*/*を参照)、それらも一致させる必要がある場合は追加します。

編集:

編集後に発生するエラーは、一致パターンが正しくないためです。

于 2010-05-04T23:07:41.497 に答える
69

すべての URL を一致させたい場合、Google にはこの目的専用の特別なパターンがあります。<all_urls>

使用例:

"matches": ["<all_urls>"],

詳細については、このページを参照してください: https://developer.chrome.com/extensions/match_patterns

于 2010-10-27T07:47:17.147 に答える
4

次のようなエラーが発生している多くの場合:

'content_scripts[0].matches' is missing or invalid.

また

'content_scripts[0].matches[0]': Empty path.

必要な特定の URL を使用して、matches フィールドに入力または作成してみてください。すべての URL を使用する場合は、次のように<all_urls>タグを使用します。

"content_scripts": [
        {
            "matches": ["<all_urls>"],
            "js": [ "jquery.js" ]
        }
    ]

「js」配列にリストされているファイルには、アプリに対する相対パスがあります。つまり、「manifest.json」の場所がルート ディレクトリです。

注: jquery.js は私のプロジェクトのディレクトリにあるファイルであり、必要なスクリプト ファイルに置き換える必要があります。

于 2016-01-08T18:50:53.463 に答える