Else 语句是 运行 即使它是假的
Else statement is running even though it is false
我试过的原始代码是这样的:
chrome.alarms.create("check-tabs", { periodInMinutes: .01, when: Date.now() + 500 });
chrome.alarms.onAlarm.addListener(function (alarm) {
if (alarm.name == "check-tabs") {
console.log("check-tabs");
chrome.tabs.query({ active: false, lastFocusedWindow: false }, function (tabs) {
for (i = 0; i < tabs.length; i++) {
if (chrome.alarms.get(tabs[i].url) == undefined) {
chrome.alarms.create(tabs[i].url, { when: Date.now() + 10 * 1000 })
}
}
});
} else {
console.log("not check-tabs, got alarm");
}
});
但是else语句只会忽略它是错误的警报并显示“not check-tabs”。当我将 else 更改为:
时,同样的事情发生了
else if (alarm.name != "check-tabs")
结果是一样的。
当我将代码更改为:
时问题得到解决
chrome.alarms.create("check-tabs", { periodInMinutes: .01, when: Date.now() + 500 });
chrome.alarms.onAlarm.addListener(function (alarm) {
if (alarm.name == "check-tabs") {
console.log("check-tabs");
chrome.tabs.query({ active: false, lastFocusedWindow: false }, function (tabs) {
for (i = 0; i < tabs.length; i++) {
if (chrome.alarms.get(tabs[i].url) == undefined) {
chrome.alarms.create(tabs[i].url, { when: Date.now() + 10 * 1000 })
}
}
});
} else if (alarm.name == "random-alarm-name") {
console.log("not check-tabs, got alarm");
}
});
但在我的代码中,当代码为 运行 时,将创建多个警报名称,因此名称并不具体。
注意:我知道不是因为第一个if语句创建的告警,我在没有创建那个告警的情况下进行了测试,结果是一样的。
有人知道如何解决这个问题吗?
您的侦听器代码可能被调用了多次。添加一个无条件的 condole.log('called ' + alarm.name)
,看看有多少被打印出来。
我试过的原始代码是这样的:
chrome.alarms.create("check-tabs", { periodInMinutes: .01, when: Date.now() + 500 });
chrome.alarms.onAlarm.addListener(function (alarm) {
if (alarm.name == "check-tabs") {
console.log("check-tabs");
chrome.tabs.query({ active: false, lastFocusedWindow: false }, function (tabs) {
for (i = 0; i < tabs.length; i++) {
if (chrome.alarms.get(tabs[i].url) == undefined) {
chrome.alarms.create(tabs[i].url, { when: Date.now() + 10 * 1000 })
}
}
});
} else {
console.log("not check-tabs, got alarm");
}
});
但是else语句只会忽略它是错误的警报并显示“not check-tabs”。当我将 else 更改为:
时,同样的事情发生了else if (alarm.name != "check-tabs")
结果是一样的。 当我将代码更改为:
时问题得到解决chrome.alarms.create("check-tabs", { periodInMinutes: .01, when: Date.now() + 500 });
chrome.alarms.onAlarm.addListener(function (alarm) {
if (alarm.name == "check-tabs") {
console.log("check-tabs");
chrome.tabs.query({ active: false, lastFocusedWindow: false }, function (tabs) {
for (i = 0; i < tabs.length; i++) {
if (chrome.alarms.get(tabs[i].url) == undefined) {
chrome.alarms.create(tabs[i].url, { when: Date.now() + 10 * 1000 })
}
}
});
} else if (alarm.name == "random-alarm-name") {
console.log("not check-tabs, got alarm");
}
});
但在我的代码中,当代码为 运行 时,将创建多个警报名称,因此名称并不具体。
注意:我知道不是因为第一个if语句创建的告警,我在没有创建那个告警的情况下进行了测试,结果是一样的。
有人知道如何解决这个问题吗?
您的侦听器代码可能被调用了多次。添加一个无条件的 condole.log('called ' + alarm.name)
,看看有多少被打印出来。