Google chrome Chrome idle扩展,用于kiosk环境,并重置通知和浏览数据
我已经为图书馆信息亭环境编写了一个框架Chrome扩展。扩展的目的是清除所有浏览数据,并在X秒不活动后重新启动Chrome。我的灵感来自Chrome网络商店上的空闲重置扩展,但这并没有提供我想要的所有功能。理想情况下,我希望模拟基于Presto的Opera的非活动重置,以信息亭模式出现,其中显示一个带有倒计时的对话窗口,即:Google chrome Chrome idle扩展,用于kiosk环境,并重置通知和浏览数据,google-chrome,google-chrome-extension,notifications,kiosk,kiosk-mode,Google Chrome,Google Chrome Extension,Notifications,Kiosk,Kiosk Mode,我已经为图书馆信息亭环境编写了一个框架Chrome扩展。扩展的目的是清除所有浏览数据,并在X秒不活动后重新启动Chrome。我的灵感来自Chrome网络商店上的空闲重置扩展,但这并没有提供我想要的所有功能。理想情况下,我希望模拟基于Presto的Opera的非活动重置,以信息亭模式出现,其中显示一个带有倒计时的对话窗口,即: 非活动重置 浏览器将在60…1秒内重置,并删除所有浏览数据 但我认为这可能有点太复杂了,我不确定chrome.notification是否支持动态内容,比如倒计时 到目前为
非活动重置
浏览器将在60…1秒内重置,并删除所有浏览数据
但我认为这可能有点太复杂了,我不确定chrome.notification是否支持动态内容,比如倒计时
到目前为止,我已经想出了一些代码,在不活动1分钟后显示chrome通知。该通知通知用户,除非活动恢复,否则浏览器将在30秒内重置。然后通知自动关闭。再静止30秒后,将清除浏览数据,删除所有现有选项卡,并打开一个新选项卡。我正在使用chrome.alarms
API,并在第一次空闲事件后降低chrome.idle.setDetectionInterval
。如果用户恢复活动,则警报和通知将被清除,chrome.idle.setDetectionInterval
将恢复为默认值60秒
这是我的event.js
代码:
chrome.idle.onStateChanged.addListener(function (newState) {
if (newState == "idle") {
var opt = {
type: "basic",
title: "Web Browser about to be reset",
message: "Web browser has been inactive for 1 minute. Move the mouse or type something within 30 seconds to prevent the reset.",
iconUrl: "refresh-icon.png"
};
chrome.notifications.create("browserResetNotification", opt, function() {
chrome.idle.setDetectionInterval(15);
chrome.alarms.create("inactivityAlarm", {'when': Date.now() + 30000})
});
}
else {
chrome.alarms.clear("inactivityAlarm", function() {});
chrome.notifications.clear("browserResetNotification", function() {});
chrome.idle.setDetectionInterval(60);
}
});
chrome.alarms.onAlarm.addListener(function (alarm) {
if (alarm.name == 'inactivityAlarm') {
chrome.browsingData.remove({
}, {
"appcache": true,
"cache": true,
"cookies": true,
"downloads": true,
"fileSystems": true,
"formData": true,
"history": true,
"indexedDB": true,
"localStorage": true,
"pluginData": true,
"passwords": true,
"webSQL": true
});
chrome.tabs.create({
url: "http://myurl.com",
active: true
}, function (newtab) {
chrome.tabs.query({}, function (results) {
for (var i = 0; i < results.length; i++) {
var tab = results[i];
if (tab.id != newtab.id) {
chrome.tabs.remove(tab.id);
}
}
});
});
}
})
chrome.idle.onStateChanged.addListener(函数(newState)){
如果(新闻状态==“空闲”){
变量opt={
类型:“基本”,
标题:“即将重置的Web浏览器”,
消息:“Web浏览器已处于非活动状态1分钟。请在30秒内移动鼠标或键入内容,以防止重置。”,
iconUrl:“刷新图标.png”
};
create(“browserResetNotification”,opt,function(){
chrome.idle.setDetectionInterval(15);
create(“inactivityAlarm”,{'when':Date.now()+30000})
});
}
否则{
chrome.alarms.clear(“inactivityAlarm”,function(){});
clear(“browserResetNotification”,function(){});
chrome.idle.setDetectionInterval(60);
}
});
chrome.alarms.onAlarm.addListener(函数(报警){
如果(alarm.name=='inactivityAlarm'){
chrome.browsingData.remove({
}, {
“appcache”:正确,
“缓存”:正确,
“饼干”:没错,
“下载”:没错,
“文件系统”:正确,
“formData”:正确,
"历史":对,,
“indexedDB”:正确,
“localStorage”:正确,
“pluginData”:没错,
“密码”:正确,
“webSQL”:正确
});
chrome.tabs.create({
url:“http://myurl.com",
主动:正确
},函数(newtab){
chrome.tabs.query({},函数(结果){
对于(var i=0;i
我的问题
- 我一直在测试我的代码,发现它并不完全可靠(即通知/重置并不总是发生),我并不感到惊讶。有更好的方法吗
- 是否可以在固定的时间内显示chrome通知,而不是自动打开和关闭?我想让它显示整整30秒,直到警报触发和浏览器重置为止
- 我对
API感到困惑,特别是何时使用chrome.idle
方法与何时使用chrome.idle.queryState
事件。特别是,如果能够在此时查询状态,而不必提供该方法所需的chrome.idle.onStateChanged
,那就更好了检测间隔秒
方法实际上做什么?向Chrome发出信号,要求删除通知的任何记录?或者强制从用户显示器上删除通知?我不清楚什么时候使用它合适chrome.notifications.clear
- 把问题集中在一起是不好的,但我会尽力回答
首先,一些关于通知的背景信息
通知可以显示在屏幕上(通常在创建时发生),也可以隐藏在Chrome的通知中心(系统托盘中的钟形图标)。在这两种情况下,它仍然是“开放的”。Chrome会在一段时间后自动将通知移动到那里(这取决于
优先级
属性)
现在,回答你的问题
我一直在测试我的代码,发现它并不完全可靠(即通知/重置并不总是发生),我并不感到惊讶
如果在未先关闭通知的情况下尝试重用通知ID,则不会重新显示通知。然后,它会在通知中心中就地更新,而不会重新显示。因此,如果您正在重用ID并希望它再次出现,请在创建之前清除create
报警可能不会熄灭,因为chrome.alarms
API的最小粒度为1分钟。如果需要较低的粒度,则需要使用DOMsetTimeout
(如果使用DOM,则不兼容)
是否可以在固定的时间内显示chrome通知,而不是自动打开和关闭?我想让它显示整整30秒,直到警报触发和浏览器重置为止
不容易,不。就像我说的,t