Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome Chrome idle扩展,用于kiosk环境,并重置通知和浏览数据_Google Chrome_Google Chrome Extension_Notifications_Kiosk_Kiosk Mode - Fatal编程技术网

Google chrome Chrome idle扩展,用于kiosk环境,并重置通知和浏览数据

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是否支持动态内容,比如倒计时 到目前为

我已经为图书馆信息亭环境编写了一个框架Chrome扩展。扩展的目的是清除所有浏览数据,并在X秒不活动后重新启动Chrome。我的灵感来自Chrome网络商店上的空闲重置扩展,但这并没有提供我想要的所有功能。理想情况下,我希望模拟基于Presto的Opera的非活动重置,以信息亭模式出现,其中显示一个带有倒计时的对话窗口,即:

非活动重置

浏览器将在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秒,直到警报触发和浏览器重置为止
  • 我对
    chrome.idle
    API感到困惑,特别是何时使用
    chrome.idle.queryState
    方法与何时使用
    chrome.idle.onStateChanged
    事件。特别是,如果能够在此时查询状态,而不必提供该方法所需的
    检测间隔秒
    ,那就更好了
  • chrome.notifications.clear
    方法实际上做什么?向Chrome发出信号,要求删除通知的任何记录?或者强制从用户显示器上删除通知?我不清楚什么时候使用它合适

    • 把问题集中在一起是不好的,但我会尽力回答

      首先,一些关于通知的背景信息

      通知可以显示在屏幕上(通常在创建时发生),也可以隐藏在Chrome的通知中心(系统托盘中的钟形图标)。在这两种情况下,它仍然是“开放的”。Chrome会在一段时间后自动将通知移动到那里(这取决于
      优先级
      属性)

      现在,回答你的问题

      我一直在测试我的代码,发现它并不完全可靠(即通知/重置并不总是发生),我并不感到惊讶

      如果在未先关闭通知的情况下尝试重用通知ID,则不会重新显示通知。然后,它会在通知中心中就地更新,而不会重新显示。因此,如果您正在重用ID并希望它再次出现,请在创建之前清除
      create

      报警可能不会熄灭,因为
      chrome.alarms
      API的最小粒度为1分钟。如果需要较低的粒度,则需要使用DOM
      setTimeout
      (如果使用DOM,则不兼容)

      是否可以在固定的时间内显示chrome通知,而不是自动打开和关闭?我想让它显示整整30秒,直到警报触发和浏览器重置为止

      不容易,不。就像我说的,t