我正在尝试在chrome中实现简单的空闲检测。
我创建了具有此权限的扩展:

"permissions": [
    "webNavigation",
    "storage",
    "tabs",
    "*://*/*",
    "idle"
],
"background": {
    "scripts": ["js/background.js"]
},
"content_scripts": [
    {
        "run_at": "document_start",
        "matches": [
            "*://*/*"
        ],
        "css": [
            "css/content.css"
        ],
        "js": [
            "js/jquery.min.js",
            "js/content.js"
        ]
    }
]


并在content.js中

$(function () {

  console.log('init idle detection');
   chrome.idle.queryState(5, function(newState){
     //"active", "idle", or "locked"
     if(newState === "idle"){ alert(newState);    }
  });


   ...init other things...

});


但是,chrome.idle始终是未定义的。

最佳答案

根据documentation,内容脚本无法访问idle API。在后台脚本(或弹出脚本)中使用它,并通过消息传递与内容脚本进行通信。

documentation


  内容脚本可以访问其父扩展使用的Chrome API
  通过与扩展名交换消息。他们还可以访问
  带有chrome.runtime.getURL()的扩展程序文件的URL,并使用
  结果与其他网址相同。

//Code for displaying <extensionDir>/images/myimage.png:
var imgURL = chrome.runtime.getURL("images/myimage.png");
document.getElementById("someImage").src = imgURL;

  
  另外,
  内容脚本可以直接访问以下chrome API:
  
  
  i18n
  存储
  运行:
  
  
  连接
  getManifest
  getURL
  ID
  onConnect
  onMessage
  发信息
  
  
  
  内容脚本无法直接访问其他API。


(在最后一行添加了粗体)

关于javascript - chrome.idle在chrome扩展名中未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56025204/

10-12 18:12
查看更多