Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在每个新选项卡上使用API中的数据更新chrome扩展徽章?_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript 如何在每个新选项卡上使用API中的数据更新chrome扩展徽章?

Javascript 如何在每个新选项卡上使用API中的数据更新chrome扩展徽章?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我想用API中的数据更新徽章。我可以用popup.html中的脚本更新徽章,但无法通过background.js 舱单包括: "background": { "scripts": ["background.js"], "persistent": false }, 如果我打开extensions弹出窗口,它调用一个正常工作的.js文件,这是该.js文件中的代码: $.getJSON('url', function(data) { var downloads = dat

我想用API中的数据更新徽章。我可以用
popup.html
中的脚本更新徽章,但无法通过
background.js

舱单包括:

"background": {
    "scripts": ["background.js"],
    "persistent": false
  },
如果我打开extensions弹出窗口,它调用一个正常工作的.js文件,这是该.js文件中的代码:

$.getJSON('url', function(data) {
    var downloads = data.downloads;
    chrome.browserAction.setBadgeText({text:downloads});
});
但是我在
background.js
中尝试了这个方法,但没有成功

chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab) {
    fetch('url').then(response => {
      let data = response.json();
      var downloads = data.downloads
      chrome.browserAction.setBadgeText({"text":downloads});
    });
});
我省略了对数字进行四舍五入的功能,因此它们适合徽章,但我已经考虑到了这一点


我做错了什么,你能告诉我吗?

我解决了这个问题,我如何使用fetch出现了问题。我发现这帮我修好了

新的background.js代码如下所示

chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab) {
  fetch(url)
    .then(response => response.json())
    .then(data => {
      console.log(data);
      var downloads = data.downloads;
      chrome.browserAction.setBadgeText({text:downloads});
    })
    .catch(console.error);
});
response.json()。您需要另一个
then()
。此外,您可能需要在setBadgeText()中指定
tabId
,有关详细信息,请参阅文档。