如何使打开/关闭按钮/图标的chrome扩展
how to make on/off buttons/icons for a chrome extension?
我想让用户决定何时要运行脚本,这样当浏览器打开时,"关闭"图标显示,没有脚本运行;但是当用户单击它时,它会变为"打开"图标并执行一个用户脚本,直到用户单击"关闭"。我有两个png图标,每个是32x32: on.png
和off.png
。
我的两个问题:
-
如何将默认图标设置为off.png?我在我的
manifest.json
中尝试了这个,但它没有设置图标,而是显示了一个拼图块(我假设是默认的):... "browser_action": { "default_icon": { "32": "off.png" }, "default_title": "icon" }, "icons": { "32": "on.png", "32": "off.png" }, "background": { "scripts": ["background.js"] }, "content_scripts": [{ "js": ["SCRIPT.user.js"] ...
-
这是我的
background.js
,在那里我暂时做了一个快速的功能来尝试和切换基于onClicked
的开/关var status = 0; function toggle() { if (status == 0){ chrome.browserAction.setIcon({path: "on.png", tabId:tab.id}); // so it's set for the tab user is in chrome.tabs.executeScript(tab.id, file:"SCRIPT.user.js"); //execute for this tab status++; } if (status == 1){ chrome.browserAction.setIcon({path: "off.png", tabId:tab.id}); chrome.tabs.executeScript(tab.id, code:"alert()"); // execute nothing when off status++; } if (status > 1) status = 0; // toggle } chrome.browserAction.onClicked.addListener(function(tab) { toggle(); });
(我应该提到,当我加载文件夹容纳我的脚本,图标和manifest在"加载解压扩展",然后选择"检查视图"检查是否有任何立即错误,我看到Uncaught SyntaxError: Unexpected token :
在后台。js,虽然我不知道它指的是什么)…在scripts文件夹
有什么想法吗?
好的,让我对你的manifest和background页面做一些修改。
manifest.json
"browser_action": {
"default_icon": "off.png",
"default_title": "icon"
},
这将使默认的off.png
。至于图标部分,请阅读文档以了解它的用途,但现在只需完全删除它。还要删除contentScripts部分中的内容。如果你想以编程方式注入它,那么就没有必要在清单中列出它。
接下来对您的背景页面进行一些更改,使其更干净:
background.js
var toggle = false;
chrome.browserAction.onClicked.addListener(function(tab) {
toggle = !toggle;
if(toggle){
chrome.browserAction.setIcon({path: "on.png", tabId:tab.id});
chrome.tabs.executeScript(tab.id, {file:"SCRIPT.user.js"});
}
else{
chrome.browserAction.setIcon({path: "off.png", tabId:tab.id});
chrome.tabs.executeScript(tab.id, {code:"alert()"});
}
});
相关文章:
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- chrome扩展更改主机/域警告
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 从选项页面更新chrome扩展清单权限
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- Chrome扩展:遍历不同的页面并收集数据
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 可以从Chrome扩展修改窗口对象吗
- 从popup.js|Chrome扩展访问DOM
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 在Chrome扩展内部输出Google API调用
- 检查是否存在使用chrome扩展的javascript库
- 从Chrome扩展访问Google Cloud SQL数据库
- Chrome扩展,Chrome.tabs.query的结果未定义
- 为tweet构建chrome扩展
- 在chrome扩展中使用AJAX获取目录中的文件数