私は簡単なChrome=拡張機能を試していますが、content_scripts
のmatches
配列に値を提供する際に問題に直面しています。
{
"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に一致するため、拡張機能はそれが実行されているページのDOMを(scripts.js
内のjavascript経由で)操作できます。私は何かを見逃していますか、これについてすべて間違っていますか?
更新
この質問を投稿した後、私はGoogleの例が私の例とは少し異なっていることに気付きました。そこで、構文を反映するためにコードを少し変更しました。
"content_scripts": [{
"matches": ["http://*"],
"js": ["scripts.js"]
}]
そうは言っても、拡張機能をロードしようとすると、次のエラーが表示されます。
「C:\ Users\foo\Desktop\Extensions\bar」から拡張機能をロードできませんでした。
'content_scripts [0] .matches [0]'の値が無効です。
content_scripts
フィールドの値を角括弧で囲む必要があります。
"content_scripts": [ {
"matches": ["http://*"],
"js": ["scripts.js"]
} ]
(詳細については Chrome Docs をご覧ください)
ちなみに、http://*/*
を使用すると、すべてのURL( docs を参照)に対してより適切に一致し、それらも一致する必要がある場合はhttps://*/*
を追加します。
編集:
編集後、表示されるエラーは、一致パターンが正しくないためです。
すべてのURLに一致させる場合、Googleはこの目的のために特別なパターン<all_urls>
サンプル使用法:
"matches": ["<all_urls>"],
詳細については、このページを参照してください: https://developer.chrome.com/extensions/match_patterns
一致パターンは次の構造にする必要があります[スキーム]://[ホスト] [パス]
HTTP/SおよびFILE URLを照合するには、次を使用します。
"matches": [
"*://*/*",
"file://*/*"
],
参照: https://developer.chrome.com/apps/match_patterns
ところで、ローカルファイルへのアクセスを許可するには、許可を追加します。
"permissions": [
"file://*/*"
]
または、拡張機能設定ページでファイルアクセスを承認します。
エラーが発生している多くの場合:
'content_scripts[0].matches' is missing or invalid.
または
'content_scripts[0].matches[0]': Empty path.
入力しようとしている、またはcreating、必要な特定のURLの一致フィールド。すべてのURLを使用する場合は、<all_urls>
以下のようなタグ。
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": [ "jquery.js" ]
}
]
「js」配列にリストされているファイルには、アプリに対する相対パスがあります。つまり、「manifest.json」の場所はルートディレクトリです。
注:jquery.jsはプロジェクトのディレクトリにあるファイルであり、必要なスクリプトファイルに置き換える必要があります。