【问题标题】:Run Chrome extension in the background在后台运行 Chrome 扩展程序
【发布时间】:2012-02-09 07:29:45
【问题描述】:

我目前正在创建我的第一个 Chrome 扩展程序,到目前为止一切顺利。 这只是我运行多个计时器的小测试。

但显然,当我打开和关闭扩展程序时,我的所有计时器都会重置。

因此,为了让我的所有计时器保持运行,当我关闭扩展程序并让它们在后台页面中运行时,我必须以某种方式使它们相同。

当我再次打开扩展程序时,这些计时器应该被发送回打开的页面。

你会怎么处理?

我已经有了一个包含所有计时器的数组,对我来说最好的选择是什么>

【问题讨论】:

    标签: google-chrome google-chrome-extension


    【解决方案1】:

    启用扩展程序时,后台页面始终运行。您看不到它,但它可以修改扩展程序的其他方面,例如设置浏览器操作标记。

    例如,以下将图标标记设置为假设服务中未读项目的数量:

    function getUnreadItems(callback) {
      $.ajax(..., function(data) {
         process(data);
         callback(data);
      });
    }
    
    function updateBadge() {
      getUnreadItems(function(data) {
         chrome.browserAction.setBadgeText({text:data.unreadItems});
      });
    }
    

    然后,您可以发出请求并安排它,以便定期检索和处理数据,您也可以随时停止请求。

    var pollInterval = 1000 * 60; // 1 minute
    
    function startRequest() {
      updateBadge();
      window.setTimeout(startRequest, pollInterval);
    }
    
    function stopRequest() {
      window.clearTimeout(timerId);
    }
    

    现在只需加载它...

    onload='startRequest()'
    

    另外,HTML5 离线存储非常适合存储数据并不断更新...

    var data = "blah";
    localStorage.myTextData = data;
    

    【讨论】:

    • 我明白了,所以实际上总是加载背景?不仅在用户关闭您的扩展程序时?目前我的计时器工作正常,每次剩余的秒数都存储在离线存储中。我的问题是,当用户单击按钮时,计时器开始运行,所以理论上我所有的计时器都必须在后台运行?
    • 是的,如果您在永远不要停止你的计时器! :)
    • 很好,但有一件事我不明白。我的“前台”页面如何与后台运行的脚本通信?看来这两个是分开的。
    • 哦,我想我可以用这个来解决这个问题:code.google.com/chrome/extensions/messaging.html
    • 他们解释了如何从弹出窗口向后台发送请求。我正在尝试从后台发送一个到弹出窗口:pastebin.com/j3kstVtm
    猜你喜欢
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2012-10-26
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多