【问题标题】:Else statement is running even though it is falseElse 语句正在运行,即使它是错误的
【发布时间】:2021-08-15 19:40:47
【问题描述】:

我尝试的原始代码是这样的:

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 语句会忽略它是错误的警报并显示“不是检查选项卡”。当我将 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 语句创建的警报,我在没有创建该警报的情况下对其进行了测试,结果是一样的。

有谁知道如何解决这个问题?

【问题讨论】:

  • 你试过把匿名函数改成实际函数吗?

标签: javascript google-chrome-extension alarm


【解决方案1】:

您的侦听器代码可能会被多次调用。添加一个无条件的condole.log('called ' + alarm.name),看看有多少会被打印出来。

【讨论】:

  • 它被多次调用,因为警报每半秒重复一次,但打印的次数与打印的其他语句相同。
  • 没关系,你是对的,我之前创建的警报也会调用监听器。
  • 我添加了chrome.alarms.clearAll();,它成功了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
相关资源
最近更新 更多