【问题标题】:chrome.idle.onStateChanged not triggering functionchrome.idle.onStateChanged 不触发功能
【发布时间】:2015-03-30 21:07:29
【问题描述】:

我正在为 Chrome 构建一个笔记应用程序,我希望该应用程序在用户停止输入时保存其进度,但我无法让 chrome.idle 触发状态更改

chrome.idle.setDetectionInterval(10);

chrome.idle.onStateChanged.addListener(
    function (newState) {
        var messageElement = document.querySelector("#message");
        messageElement.innerHTML = "idle";
        if (newState === "idle")
            save();
    }
);

Chrome 需要访问空闲功能的权限,因此我在清单中包含了空闲权限。但是,当我使用扩展工具加载应用程序并查看权限时,它说我没有特殊权限。这可能与为什么空闲状态更改没有触发我的功能有关吗?

【问题讨论】:

  • “停止输入”?此 API 只会检测“根本没有碰过计算机”这样的状态。
  • 这来自 Google 的文档“如果从上次检测到用户输入后经过了 intervalInSeconds (10) 秒,则系统被认为是空闲的。”在示例中,这是否意味着当用户在 10 秒内没有输入任何内容时,应用程序将被视为空闲?还是我误解了正在发生的事情?
  • 这是我一直在阅读以了解空闲 API link
  • 系统没有用户输入,不仅仅是你的应用。
  • 你说得对,整个系统都需要空闲,而不仅仅是我的应用程序。 Evernote 之类的应用如何保存文本?

标签: javascript permissions google-chrome-app


【解决方案1】:

如果其他人遇到这种情况,问题是 setDetectionInterval 将接受的最小值是 15。我发现一些代码正试图完全按照我在 Safari Online 书中所做的事情...

chrome.idle.setDetectionInterval(15);

chrome.idle.onStateChanged.addListener(
    function (state) {
        if (state === "idle" && dirty)
            save();
    }
);

这段代码几乎完全一样,但这个版本有效,而我的却没有。控制台打印一个错误,指出间隔的最小值是 15 秒,我试图每 10 秒检查一次。所以我将代码切换为每 15 秒检查一次,一切正常

【讨论】:

  • 您是在网页中使用它还是仅作为APP使用?如果我以localhost/index.html 运行页面,我可以使用它吗?
  • 我在 Chrome Web Store 应用程序中使用它,所以我正在打包代码并使用 Chrome 包管理器加载它。然后 Chrome OS 处理了页面的启动。 chrome-extension 应该以类似的方式工作。实际上做一个网页可能会在 Chrome 中工作,但我还没有尝试过。当我这样做的时候,没有太多关于构建 Chrome 网上应用店应用程序的信息,但是在适用于网上商店应用程序的 Chrome 扩展文档中有很多重叠。
  • 另外,我当时正在看的书是 O'Reilly 的书“Programming Chrome Apps”shop.oreilly.com/product/0636920033776.do
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多