将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,但是调试器抛出相同的错误。
答案 0 :(得分:1)
如果您的js解析器告诉您change is undefined
这就是问题所在。 change
未定义。
将其重命名为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()
的事情。因为undefined