首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助更新到报表V3 - Service_Worker

需要帮助更新到报表V3 - Service_Worker
EN

Stack Overflow用户
提问于 2022-09-30 17:21:26
回答 1查看 99关注 0票数 0

我继承了一个在Chromebook上内部使用的扩展,用于将身份验证传递给当前登录用户的web服务器。扩展本身运行良好,就像现在使用清单V2一样,但是我们正在尝试为舱单v3做准备,并且在启动扩展时遇到了问题。

下面是扩展的示例,因为它是当前设置的。

报表文件

代码语言:javascript
复制
{
"background": {
  "scripts": [ "background.min.js" ]
},
"description": "User Agent",
"icons": {
  "128": "icon.png",
  "16": "icon.png"
},
"manifest_version": 2,
"name": "User Agent",
"permissions": [ "background", "identity", "identity.email", "http://*/", "https://*/" ],
"version": "1.0.3"
}

背景文件

代码语言:javascript
复制
(function() {
var e = void 0,
    n = new Event("userInfoChanged"),
    t = 0,
    a = function() {
        chrome.identity.getProfileUserInfo(function(a) {
            var o = !1;
            o = (new Date).getTime() > t + 179e4 || e != a.email, e = a.email, o && (n.username = e, document.dispatchEvent(n))
        })
    };
document.addEventListener("userInfoChanged", function(e) {
    t = (new Date).getTime();
    var n = new XMLHttpRequest;
    n.open("GET", "URL_TO_WEB_SERVER" + encodeURIComponent(btoa(e.username)), !0), n.send()
}, !1), setInterval(a, 6e4), a(), setInterval(function() {
    n.username = e, document.dispatchEvent(n)
}, 18e5)
 }).call(this);

根据我所读到的来更新这一点,您需要从使用“服务工作者”的“背景页”中移除

我们需要在启动/扩展名安装时对当前background.min.js文件中发生的身份验证。我一直在阅读,似乎使用chrome.alarms是一条路。

我已经更新了清单文件

更新的报表文件

代码语言:javascript
复制
{

 "background": {
  "service_worker": "background.min.js"
 },
 "description": "User Agent",
 "icons": {
    "128": "icon.png",
    "16": "icon.png"
 },
 "manifest_version": 3,
 "name": "User Agent",
 "permissions": ["alarms", "background", "identity", "identity.email", "http://*/", 
"https://*/" ],
"version": "1.2.0"
}

并更新了background.min.js文件

更新的背景文件

代码语言:javascript
复制
chrome.alarms.onAlarm.addListener(a => {
console.log('Alarm! Alarm!', a);
});

 chrome.runtime.onInstalled.addListener(() => {
 chrome.alarms.get('alarm', a => {
 if (!a) {
   chrome.alarms.create('alarm', {periodInMinutes: 1});
 }
});
  });



  (function() {
  var e = void 0,
     n = new Event("userInfoChanged"),
     t = 0,
     a = function() {
         chrome.identity.getProfileUserInfo(function(a) {
            var o = !1;
            o = (new Date).getTime() > t + 179e4 || e != a.email, e = a.email, o && (n.username = e, document.dispatchEvent(n))
        })
    };
document.addEventListener("userInfoChanged", function(e) {
    t = (new Date).getTime();
    var n = new XMLHttpRequest;
    n.open("GET", "URL_TO_WEB_SERVER" + encodeURIComponent(btoa(e.username)), !0), n.send()
}, !1), setInterval(a, 6e4), a(), setInterval(function() {
    n.username = e, document.dispatchEvent(n)
}, 18e5)
}).call(this);

我能够让扩展安装,但似乎后台脚本中的函数没有运行。我更像一个系统专家,我对PowerShell更满意。这件事落在我的膝上,但我很想弄清楚这件事。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-10-01 01:27:08

我也写信给Reddit,但似乎没有反映出来。

  1. 在manifest.json中向权限添加警报
  2. 在background.js中编写警报注册函数和激活过程
代码语言:javascript
复制
    const ALARM_NAME = "alarmName";
    
    // Alarm registration function
    function addTimer(): void {
        chrome.alarms.create(ALARM_NAME, {
            periodInMinutes: 15,
        });
        chrome.alarms.onAlarm.addListener((alarm) => {
            if (alarm.name === ALARM_NAME) {
                periodicFunctionYouLike();
            }
        });
    }
    
    // Register if there is no alarm with the specified name
    chrome.alarms.get(ALARM_NAME)
        .then((alarm) => {
            if (!alarm) {
                addTimer();
            }
        }).catch(() => {
            addTimer();
        });

在此过程中,Google同步实际上是通过我们的铬延长线定期实现的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73912060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档