google-chrome-extension - chrome.browserAction, 禁用 图标
问题描述
我正在尝试根据内容脚本的匹配来禁用或启用我的 chrome 扩展,但我认为有更好的方法。下面是我的代码。似乎我试图完成的事情可以通过chrome.declarativeContent.onPageChanged来实现,但这似乎并没有持续触发。
const IsMatch = (tab, matches) => {
if (tab ==undefined && tab == null && tab.url == undefined){
return false;
}
for(var ctr = 0; ctr < matches.length ; ctr ++){
var match = matches[ctr].substring(0, matches[ctr].length - 1);
if (tab.url.startsWith(match) ) {
return true;
}
}
return false;
}
const updateIcon = tabId => {
chrome.browserAction.disable();
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
var contentScripts = chrome.runtime.getManifest().content_scripts;
for(var i = 0; i < contentScripts.length ; i ++){
var contentScript = contentScripts[i];
if ( IsMatch(tabs[0], contentScript.matches) ) {
chrome.browserAction.enable();
console.log('chrome.tabs.query');
console.log(tabs[0]);
return;
}
}
});
};
chrome.tabs.onUpdated.addListener(updateIcon);
在@wOxxOm 推荐的更改之后,我现在处于竞争状态,这里是更新的代码
browser.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.message === 'enableIcon') {
console.log(sender.tab.id + ' ' + request.message);
chrome.browserAction.setIcon({tabId: sender.tab.id, path: 'icon-16.png'});
browser.browserAction.enable();
}
return true;
});
browser.tabs.onUpdated.addListener(function(tabId) {
console.log(tabId + ' disableIcon');
chrome.browserAction.setIcon({tabId: tabId, path: 'icon-16-Disabled.png'});
chrome.browserAction.disable();
});
这是输出:
- 6: backgroundIcon.js:31 39 禁用图标
- 1:背景图标.js:22 39 启用图标
- 2: backgroundIcon.js:31 39 禁用图标
解决方案
推荐阅读
- python - 作为初学者理解 Gurobi Python
- java - 模块信息.java 设置
- python - 使用 python 加密 AES 256 CBC 并使用 PHP 解密
- sql - 如何检查数组是否使用 SQL 排序?
- pytorch - 标记器解码步骤中的标记到单词映射?
- python - 按第一个单词分组 nltk.FreqDist 输出(python)
- c# - 我如何让 cefsharp 使用 certin 搜索引擎
- phpmyadmin - 查询在 PHPMyadmin 中的第二列花费了太多时间
- mariadb - Mariadb longtext union 总是返回空字符串
- oracle - oracle中根据同一列的一系列条件查询