chrome.idle在chrome扩展名中未定义

时间:2019-05-07 14:46:00

标签: javascript google-chrome google-chrome-extension

我正在尝试在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始终是未定义的。

1 个答案:

答案 0 :(得分:1)

根据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
    •   
    • sendMessage
    •   
  •   
     

内容脚本无法直接访问其他API。

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