Chrome拡張機能が相互作用するドメインのリスト(約10)があります。
これを使用する必要があるChrome拡張機能のドキュメントを調べたので、content_scripts
これらの行をmanifest.jsonに含めました。
"content_scripts": [ {
"all_frames": true,
"js": [ "js/main.js" ],
"matches": [ "http://domain1.com/*",
"http://domain2.com/*",
"http://domain3.com/*",
"http://domain4.com/*",
"http://domain5.com/*",
"http://domain6.com/*",
"http://domain7.com/*",
"http://domain8.com/*",
"http://domain9.com/*",
"http://domain10.com/*"
],
"run_at": "document_start"
}],
これは、URLがマニフェストファイルで定義されたURLと一致するすべてのページをロードするときに、main.jsがページに挿入されることを意味します。私は正しいですか?はい。
だから私はスクリプトが挿入されたときにいくつかのUIをやりたいですpage action
マニフェストに次の行を含めました。
"page_action": {
"default_icon": "images/pa.png",
"default_title": "This in one of that 10 domains, that is why I showed up!"
},
足りないようです。ページアクションを手動でトリガーする必要があります。しかしここで ?この目的のために、background.htmlファイルが必要になることに気づきました。
しかし、なぜ同じmain.jsファイルにトリガーを含めることができないのですか?答え:
However, content scripts have some limitations. They **cannot**:
- Use chrome.* APIs (except for parts of chrome.extension)
- Use variables or functions defined by their extension's pages
- Use variables or functions defined by web pages or by other content scripts
それで、それをマニフェストに含めました:
"background_page": "background.html"
これが内容です:
<html>
<head>
<script>
function check (tab_id , data , tab){
//test just one domain to be simple
if (tab.url.indexOf('domain1.com') > -1){
chrome.pageAction.show(tab_id);
};
};
chrome.tabs.onUpdated.addListener(check);
</script>
</head>
</html>
ここまでは十分公平、
私が欲しいのですが、拡張機能のオン/オフを切り替える機能を追加する方法がわかりません。
ユーザーがページアクションアイコンをクリックします->アイコンが変化し、オフ/オンになります(main.jsの動作が異なります)