使用chrome.browserAction.getBadgeText获取Tab徽章文本返回空值问题
问题原因
你调用chrome.browserAction.getBadgeText({}, ...)时传入空对象,这会请求全局的徽章文本。如果你的徽章是针对特定标签页设置的(调用setBadgeText时传了tabId参数),全局徽章文本本身就是空的,所以返回结果为空。
解决方法
要获取当前标签页的徽章文本,需要先拿到当前活跃标签的tabId,再传入getBadgeText:
- 在
manifest.json中添加tabs权限:
{ "manifest_version": 2, "permissions": ["tabs"], // 其他配置项... }
- 修改
popup.js的代码,先获取当前标签页ID,再请求对应标签的徽章文本:
// 获取当前活跃标签页 chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { const currentTabId = tabs[0].id; // 传入tabId获取对应标签的徽章文本 chrome.browserAction.getBadgeText({tabId: currentTabId}, function(result) { console.log(result); // 这里可以把result渲染到popup.html的DOM元素中 }); });
补充说明
如果你的徽章确实是全局设置的(调用setBadgeText时没传tabId),那原代码应该能返回值,这时候可以检查是否有其他代码覆盖了全局徽章文本,或者调用时机是否过早(比如popup还没完全加载就执行了)。
内容的提问来源于stack exchange,提问作者Gangula
相关产品推荐
相关产品推荐

