实现一个Chrome扩展开/关切换按钮
implementing a Chrome extension on/off toggle button
我正试图实现一个开/关切换为我的扩展,这是一个内容脚本挂钩到"beforeload"事件,并有选择地取消基于一些逻辑请求(例如:你想阻止某个域名的URL加载,某个特定的URL加载,等等)。
我正在设置一个"启用"变量在我的背景页和使用chrome.extension.sendRequest()
在我的内容脚本&chrome.extension.onRequest.addListener()
在我的后台扩展页检索扩展的启用/禁用状态
Settings = {};
Settings.enabled = 1;
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if (request.getState == "enabled") {
sendResponse({result: Settings.enabled});
} else {
sendResponse({});
}
}
);
我有一个处理设置启用/禁用变量的弹出页面。当点击"启用"按钮时,chrome.extension.getBackgroundPage().Settings.enabled = 1;
触发,当点击"禁用"按钮时,chrome.extension.getBackgroundPage().Settings.enabled = 0;
火灾(此功能工作正常)
我的内容脚本在我开始检查"启用/禁用"变量(should_block_request
是伪代码):
(function() {
document.addEventListener("beforeload", function(event) {
if (should_block_request) {
event.preventDefault();
}
}, true);
}());
这里是在之后,使用chrome.extension.sendRequest()
的消息传递来查询后台页面中的"启用"设置,并在其回调中执行请求阻塞逻辑
(function() {
document.addEventListener("beforeload", function(event) {
chrome.extension.sendRequest({getState: "enabled"}, function(response) {
var enabled = response.result;
if (!enabled) {
return;
} else {
if (should_block_request) {
event.preventDefault();
}
};
});
}, true);
}());
"之前"内容脚本按预期工作,当满足条件时阻止请求,但是当我尝试我的内容脚本的"事后"版本时,标准是仍然满足,但请求不被阻止,即使event.preventDefault()被调用。
chrome.extension.sendRequest()是检查设置的正确方法吗?启用变量内的"beforeload"事件处理程序回调?event.preventDefault()是否需要调用一个比我目前拥有的级别更高的级别?
我不确定这是否有帮助,但在chrome v16和以后的扩展可能禁用/启用javascript。
这里有一个这样的扩展:http://code.google.com/p/chromium/issues/detail?id=71067- 扩展移相器按钮类不工作
- 将sharethis按钮添加到chrome扩展popup.html
- 谷歌扩展:如何在弹出窗口中按下按钮时在我的javascript文件中运行函数
- Chrome扩展程序:浏览器操作单击按钮工作一次
- Chrome 扩展程序.在弹出菜单中分配具有功能的按钮
- 按钮不'不能在自定义镀铬扩展中工作
- chrome扩展按钮使用browser_action基本q突出显示
- 为什么我的 init() 函数没有运行?(安装 Firefox 扩展时自动添加工具栏按钮,但仅在首次运行时)
- 如何在 Firefox 扩展的 JavaScript 中的按钮背景中插入图像
- 按钮点击不工作在谷歌扩展
- 如何在mozilla firefox扩展中更改自定义工具栏按钮的颜色
- 有没有办法查看Chrome扩展程序的图标/按钮是否已隐藏
- 使用chrome扩展(HTML、CSS、JavaScript)向输入字段添加可点击的图标/按钮
- 如何在chrome扩展中插入通知操作按钮
- Javascript按钮单击在Chrome扩展弹出窗口中不起作用
- 通过命令按钮单击更改丰富面可扩展数据表高度
- 通过单击按钮将选项卡(项目)添加到选项卡面板,扩展
- 从链接到确认按钮扩展程序的asp文本框中删除HTML标记,而不设置ValidateRequest=“”;false”;
- 如何在URL满足某些条件时才启用Safari工具栏按钮扩展('validate'检查)
- 如何在 asp.net 中确认按钮扩展器之前调用 javascript 函数