繁体   English   中英

Chrome扩展程序中的setTimeOut范围

[英]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.jsoptions.js访问相同的字符串变量localStorage.yourNotificationDelay )。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM