我想让用户决定何时要运行脚本,以便在浏览器打开时显示“关闭”图标并且不运行脚本;但是当用户点击它时,它会变成“开”图标并执行一个用户脚本,直到用户点击。我有两个PNG图标,每个都是32x32:on.png
和off.png
。如何为Chrome扩展打开/关闭按钮/图标?
我的两个问题:
我如何设置默认图标我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(); });
(我要提到的是,当我打开折叠壳体我的剧本,图标和体现在“负荷解包扩展名”,然后选择“检查意见“ 至 检查是否有什么立即出错,我在background.js中看到Uncaught SyntaxError: Unexpected token :
,但我不知道它指的是什么)...并且它似乎没有在脚本文件夹中显示我的用户脚本
因此,有什么想法,有帮助吗?
@tempcode我刚刚复制的代码之前,但当我看它我再次看到你错过了围绕'executeScript'的'code'和'file'部分的'{}'尝试添加这些部分并查看错误是否消失。 – BeardFist 2013-04-21 22:49:14
好吧,跳栏,我们快到了。该修复允许我从关闭切换到*(在我遇到的第一个测试中,“扩展清单必须请求访问此主机的权限” - 因为您建议删除'manifest'中的'content-scripts'部分, 'matches'和'excludes',我添加了一个'permissions'来解决这个错误)*,但是还有一个最后的小问题:一旦我把它打开,我就不能点击来关闭它,它只是保持“开启“直到页面重新加载(至少我们知道唯一的'tab.id'工作)。但是,除此之外,其余的似乎都在起作用。感谢您一直以来的帮助! – tempcode 2013-04-21 23:11:17
@tempcode好的,所以看起来问题在于'status'是某种关键字,因此'var status = false'不会分配false,而是分配false,因为status已经被定义为一个字符串。改变变量名称来代替'toggle'。 – BeardFist 2013-04-21 23:29:31