【问题标题】:Chrome API Alarm stops after page refresh页面刷新后 Chrome API 警报停止
【发布时间】:2015-08-02 18:35:12
【问题描述】:

阅读后,我的印象是,即使在 Chrome 关闭、页面刷新等之后,Chrome 警报仍会继续工作。来自 Google 结果之一:

使用 Chrome 警报 API,您可以设置持续时间为 应用已安装,即使其后台页面处于非活动状态。

我的问题是我在 options.js 页面中为 Chrome 扩展设置了一个 Chrome 警报。保存选项页面时会创建警报 (chrome.alarms.create)。

如果我保持页面打开,警报就会起作用。但是,如果我重新加载页面 (options.html),我将不再收到警报。

这是我的 options.js 的一部分

$('#save-options-button').on('click', function() {

    //Clears existing alarm
    chrome.alarms.clearAll();

    //Create alarm
    chrome.alarms.create("fetchAlarm", {
        delayInMinutes: 1,
        periodInMinutes: 1
    });

    chrome.alarms.onAlarm.addListener(function(alarm) {
        console.log("Got an alarm!", alarm);

    });
});

【问题讨论】:

    标签: javascript jquery google-chrome google-chrome-extension alarm


    【解决方案1】:

    我猜你是在引用 Chrome Apps 文档,这就是它令人困惑的原因。

    这意味着event pagesbackground page 的一种类型)将被唤醒以提供警报事件,即使它们因空闲而被卸载。

    适用于事件/背景页面。 Chrome 不会仅仅因为该页面过去收听的事件发生了就随机打开一个页面。因此,您不应将实际的事件侦听器逻辑放入 UI 页面(选项、弹出窗口等)

    在您的情况下,刷新页面会使包含侦听器的 JS 上下文随之被销毁,并且您的逻辑仅在单击后添加一个侦听器。即使您将 addListener 添加到顶级代码,它也只会在页面打开时起作用。

    因此,您需要添加一个后台页面来服务该事件(实际的侦听器)。

    背景页面通常随时准备回答事件。事件页面的特殊之处在于 Chrome 会记住哪些事件应该触发它们的加载,而不是让它们保持加载。你可以阅读更多关于它的信息in another answer of mine

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-26
      • 2020-03-05
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多