javascript - 如何为 chrome 上的每个标签获得不同的徽章值?

标签 javascript jquery google-chrome dom google-chrome-extension


我正在尝试做一些像 adblock 那样的事情。 Adblock 计算“广告”的数量并更新徽章值。现在,我尝试对“背景页面”做一些事情,但它们只运行一次并且所有选项卡的徽章值都相同。我不能使用浏览器操作 popup.html,因为它仅在单击后触发。
所以我需要一些获取当前选项卡,能够读取选项卡的当前 DOM 并最终更新徽章值的东西。但在我点击不同的选项卡后,我还需要计算新的徽章值。
提前致谢

最佳答案

如果您指定了 tabId 参数,则为每个选项卡单独存储徽章文本,如果您已经设置了该值,则无需在用户切换选项卡后手动更新它。

因此,如果您的扩展程序在加载后立即处理页面,请调用一次 chrome.browserAction.setBadgeText。你可以做到,例如通过从您的内容脚本向您的背景/事件页面发送一条消息,该页面将使用发件人选项卡的 ID 调用 setBadgeText(此参数使文本对于选项卡而言是唯一的)。

内容脚本:

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
  }
});

关于javascript - 如何为 chrome 上的每个标签获得不同的徽章值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32168449/

相关文章:

jquery - MVC3 使用 JQuery Ajax 将 ViewModel 传递给 Controller ​​方法

Jquery 包含并显示目标 div block

javascript - 暂停/中断 javascript 的执行以进行调试,但仅限于某些 javascript 文件

javascript - JavaScript 中的 for in 循环

javascript - 如何摆脱添加到字符串开头的随机 "%3"

javascript - 添加到代码中的 Jquery 选项卡使自动滚动(垂直)滚动过去 anchor

javascript - 我如何在每一行添加删除按钮?

javascript - google. payments.inapp.getPurchases 不起作用

iphone - Facebook JS 连接不支持的浏览器

javascript - 如何更改输入元素的值?