我正在构建一个简单的扩展,要求default_icon根据页面中是否存在JS变量而更改。就这么简单,至少这个功能。
我设法在这个条件下更改每个页面加载的图片,但是我想进一步改变用户浏览器中所有加载标签的图片,只要用户更改他关注的标签。 我在尝试仅为活动选项卡更改default_icon时遇到了麻烦。
有谁知道我应该如何继续这样做? (我仍然是编写Chrome扩展程序的初学者)
我的内容.js:
if (test == "OK") {
// Setting OK Icon
chrome.runtime.sendMessage({"message": "Existing"});
}
else if (test == "NOK") {
// Setting NOK Icon
chrome.runtime.sendMessage({"message": "Not existing"});
}
我的background.js:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.message === "Existing" ) {
chrome.browserAction.setIcon({path:"OKicon.png"});
}
if( request.message === "Not Existing" ) {
chrome.browserAction.setIcon({path:"NOKicon.png"});
}
}
);
答案 0 :(得分:3)
好吧,你应该看看chrome.browserAction.setIcon
documentation。
整数(可选)
tabId
将更改限制为选择特定选项卡的时间。选项卡关闭时自动重置。
正是需要的!现在,标签ID为reported in the sender
parameter:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if( request.message === "Existing" ) {
chrome.browserAction.setIcon({
path:"OKicon.png",
tabId: sender.tab.id
});
}
if( request.message === "Not Existing" ) {
chrome.browserAction.setIcon({
path:"NOKicon.png",
tabId: sender.tab.id
});
}
}
);
答案 1 :(得分:0)
你基本上就在那里。您需要做的就是将您在内容脚本中的逻辑包装为window focus
事件的回调。
window.onfocus = function(){
if (test == "OK") {
// Setting OK Icon
chrome.runtime.sendMessage({"message": "Existing"});
} else {
// Setting NOK Icon
chrome.runtime.sendMessage({"message": "Not existing"});
}
}
当用户更改焦点时,background
脚本将从context
脚本接收运行时消息,并相应地更改扩展图标。