[英]setTimeOut scope in a Chrome extension
我的Chrome扩展程序中有一个通知功能,由后台页面管理(background.html)此页面调用setNotificationDelay()函数,该函数基本上是先前计时器的删除,后跟setTimeOut。
function setNotificationDelay() {
clearNotificationTimer();
newDelay = getNotificationDelay()
notificationTimer = setTimeout(showNotification, newDelay);
}
}
我还有一个options.html页面,允许配置通知小时。 我想在修改配置时修改后台超时,但是当我从Option页面调用setNotificationDelay()时它不起作用,我认为这是因为定时器的范围附加到父页面。
如果我打开选项页面,则会触发超时,如果我关闭它,通知就不会发生。
如何将此计时器附加到后台页面? 有没有更好的方法来实现它?
谢谢。
编辑:chrome.extension具有getBackground页面方法,该方法返回后台页面的窗口对象:
function setNotificationDelay() {
clearNotificationTimer();
newDelay = getNotificationDelay()
notificationTimer = chrome.extension.getBackgroundPage().setTimeout(showNotification, newDelay);
}
}
options.js
仅在options.html
页面打开时才有效,我认为您在等待通知时不想让页面保持打开状态。 你想要的(我认为)是让background.js
设置通知( background.js
和options.js
访问相同的字符串变量localStorage.yourNotificationDelay
)。
需要注意的一件事是,如果您使用的是事件页面而不是背景页面,则不会发生超过几秒钟的通知,因为Chrome将卸载后台页面。 在这种情况下,您需要使用警报 。
编辑:你的编辑让我觉得我不理解你。 也许您希望用户在计时器运行时更改间隔? 然后我建议使用newDelay
向background.js
发送消息 ,并使用它来调用setNotificationDelay()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.