如何在crossrider中检查浏览器是否处于活动状态?

Sum*_*h P 4 browser-extension crossrider

我需要在扩展中使用时间来计算浏览器.如果我可以检查浏览器是否处于活动状态,那么很容易计算时间.这怎么可能在交叉驾驶者?

var focused = true;
window.onfocus = window.onblur = function(e) {
    focused = (e || event).type === "focus";
}
alert(focused);
Run Code Online (Sandbox Code Playgroud)

我在background.js中尝试了这个代码,但即使我最小化浏览器窗口,它总是显示"true".

Shl*_*omo 7

焦点和模糊事件在任何扩展的后台范围内都不可用,即使不使用Crossrider也是如此.

常见的解决方案是使用扩展范围(extension.js)来检测事件,然后使用消息传递将信息传递到后台页面.

以您的代码为基础,以下示例可帮助您实现目标:

extension.js

appAPI.ready(function($) {
  window.onfocus = window.onblur = function(e) {
    appAPI.message.toBackground({
      focus: (e || event).type === "focus"
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

background.js

appAPI.ready(function($) {
  appAPI.message.addListener(function(msg) {
    console.log('focus: '+msg.focus);
  });
});
Run Code Online (Sandbox Code Playgroud)

[ Diclosure:我是Crossrider员工]