好吧,我有一个域列表(大约 10 个),我的 chrome 扩展程序将与之交互。
当我研究需要使用的 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 将被注入到页面中。我对吗?是的。
所以我想在脚本注入时做一些UIpage 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 会有所不同)