我正在尝试在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始终是未定义的。
答案 0 :(得分:1)
根据documentation,内容脚本无法访问idle
API。在后台脚本(或弹出脚本)中使用它,并通过消息传递与内容脚本进行通信。
内容脚本可以访问其父扩展使用的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。
(在最后一行添加了粗体)