我正在尝试在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/