Javascript 如何修复JS中未定义的函数

Javascript 如何修复JS中未定义的函数,javascript,Javascript,将Chrome扩展移植到Firefox // Changes extension icon on tab switch browser.tabs.onActivated.addListener(async function (change) { var status = await currentStatus(); browser.tabs.get(info.tabId, function (change) { if (!(status) || info.url.match(/h

将Chrome扩展移植到Firefox

// Changes extension icon on tab switch
browser.tabs.onActivated.addListener(async function (change) {
  var status = await currentStatus();
  browser.tabs.get(info.tabId, function (change) {
    if (!(status) || info.url.match(/https:\/\/url.com\/*/) == null) {
      browser.browserAction.setIcon({
        path: 'images/icon-19-disabled.png'
      });
    } else {
      browser.browserAction.setIcon({
        path: 'images/icon-19.png'
      });
    }
  });
});

// Changes extension icon on tab URL switch
browser.tabs.onUpdated.addListener(async function (change, tab) {
  var status = await currentStatus();
  if (tab.url == undefined) {
    return;
  }

  if (!(status) || tab.url.match(/https:\/\/url.com\/*/) == null) {
    browser.browserAction.setIcon({
      path: 'images/icon-19-disabled.png'
    });
  } else {
    browser.browserAction.setIcon({
      path: 'images/icon-19.png'
    });
  }
});
调试器正在抛出“更改未定义”


我尝试将函数名更改为info,但调试器抛出了相同的错误。

如果js解析器告诉您
更改未定义

那这就是问题所在<代码>更改未定义。 将其重命名为
info
不会改变任何东西,除非您还有一个对象
info
, 你能做到的

因此,解析器准确地告诉您出了什么问题,在这一行中:

browser.tabs.get(info.tabId, function(change) {
if (!(status) || info.url.match(/https:\/\/url.com\/*/) == null) {

它告诉您
info===undefined
,当然您不能执行类似
undefined.tabId
undefined.url.match()之类的操作。由于
未定义的

中没有此类对象变量或方法,因此我没有看到名为“change”的函数。我看不到代码中定义了名为
change
的函数的任何地方。