【问题标题】:How to correctly write new "event page" for chrome extensions?如何为 chrome 扩展正确编写新的“事件页面”?
【发布时间】:2013-04-20 22:25:11
【问题描述】:

在新的 chrome 扩展 API 中,“背景页面”被替换为“事件页面”,这些页面在扩展安装时仅加载一个,并且需要注册回调,该回调将由 chrome 在某些事件上调用。

我想创建每秒执行我的代码的“事件页面”。我用“manifest.json”创建了一个扩展:

{
  "manifest_version" : 2,
  "name" : "myextension",
  "version" : "1.0.0",
  "background" : { "scripts" : [ "background.js" ], "persistent" : false }
}

和“background.js”:

function onTimer()
{
  console.log( "on timer" );
}

function onStartup()
{
  console.log( "on startup" );
  window.setInterval( onTimer, 1000 );
}

console.log( "script load" );
chrome.runtime.onStartup.addListener( onStartup );

安装扩展程序后,我可以在开发人员工具控制台中看到“脚本加载”,但看不到“启动时”和“计时器时”:(。在我关闭并重新打开浏览器后,甚至“脚本加载”都没有显示(这是预期的)。我做错了什么?

【问题讨论】:

  • setInterval -> chrome.alarms
  • @RobW “为了减少用户机器上的负载,Chrome 将警报限制为最多每 1 分钟一次,但可能会延迟任意数量”
  • 每秒运行代码意味着必须一直加载后台页面。那么你必须使用背景页面,而不是事件页面。 (你每秒需要做什么?它必须消耗大量资源并且可能会降低浏览器的速度。)

标签: google-chrome-extension


【解决方案1】:

来自Google Event Pages API

如果您的扩展程序使用 window.setTimeout() 或 window.setInterval(), 改用警报 API。基于 DOM 的计时器不会 如果事件页面关闭,则兑现。

看起来事件页面正在破坏您的 setInterval() 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 2016-09-12
    • 1970-01-01
    相关资源
    最近更新 更多