Javascript 如何修复JS中未定义的函数
将Chrome扩展移植到FirefoxJavascript 如何修复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
// 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
的函数的任何地方。