0

我的 chrome 扩展中有一个通知功能,它由后台页面 (background.html) 管理。此页面调用 setNotificationDelay() 函数,该函数基本上是删除前一个计时器,然后是 setTimeOut。

function setNotificationDelay() {
    clearNotificationTimer();
    newDelay = getNotificationDelay()
    notificationTimer = setTimeout(showNotification, newDelay);
    }
}

我还有一个 options.html 页面,它允许配置通知时间。我想在修改配置时修改后台超时,但是当我从选项页面调用 setNotificationDelay() 时它不起作用,我认为这是因为计时器的范围附加到父页面。

如果我让选项页面打开,则会触发超时,如果我关闭它,则通知永远不会发生。

如何将此计时器附加到背景页面?有没有更好的方法来实现它?

谢谢。

编辑: chrome.extension 具有 getBackground 页面方法,该方法返回背景页面的窗口对象:

function setNotificationDelay() {
    clearNotificationTimer();
    newDelay = getNotificationDelay()
    notificationTimer = chrome.extension.getBackgroundPage().setTimeout(showNotification, newDelay);
    }
}
4

1 回答 1

2

options.js仅在options.html页面打开时才处于活动状态,并且我认为您不想在等待通知时让页面保持打开状态。您想要的(我认为)是background.js设置通知(两者background.jsoptions.js访问相同的字符串变量localStorage.yourNotificationDelay)。

需要注意的一件事是,如果您使用的是事件页面而不是背景页面,则不会发生超过几秒钟的通知,因为 Chrome 会卸载背景页面。在这种情况下,您需要改用警报

编辑:你的编辑让我觉得我不理解你。也许您希望用户在计时器运行时更​​改间隔?然后我建议向 with 发送一条消息,然后用它来调用.background.jsnewDelaysetNotificationDelay()

于 2013-05-13T20:26:54.323 回答