我正在尝试做像 adblock 那样的事情。 Adblock 计算“广告”的数量并更新徽章值。目前,我尝试对“背景页面”执行某些操作,但它们仅运行一次,并且所有选项卡的徽章值都相同。我无法使用浏览器操作 popup.html,因为它仅在单击后触发。
所以我需要一些东西获取当前选项卡,能够读取选项卡的当前 DOM 并更新徽章值。但在我单击不同的选项卡后,我还需要计算新的徽章值。
提前致谢
如果您指定 tabId 参数,则每个选项卡的徽章文本都会独立存储,如果您已经设置了该值,则无需在用户切换选项卡后手动更新它。
因此,如果您的扩展在加载后立即处理页面,请调用chrome.browserAction.setBadgeText
一次。你可以这样做,例如通过将消息从内容脚本发送到后台/事件页面,该页面将调用setBadgeText
与发件人选项卡的 ID(此参数使文本对于选项卡而言是唯一的)。
内容脚本:
chrome.runtime.sendMessage({badgeText: "123"});
背景/事件脚本:
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.badgeText != null) {
chrome.browserAction.setBadgeText({
tabId: sender.tab.id,
text: message.badgeText,
}, () => chrome.runtime.lastError); // ignore errors due to closed/prerendered tabs
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)