簡體   English   中英

如何檢測擴展中的新 Chrome Session

[英]How to Detect a New Chrome Session in Extension

我有一個擴展需要檢測新的 Chrome session 何時啟動。 我在這里找到了一個建議如下的帖子:

chrome.runtime.onStartup.addListener(async function() {
   console.log("new startup detected");
   await chrome.storage.local.set({"status":false});
});

但是,聽眾似乎不起作用。 也不清楚它指的是什么初創公司。 啟動 Chrome 或啟動擴展程序。 有人可以闡明如何檢測新 chrome 何時啟動嗎? TIA。

更新代碼

chrome.windows.onCreated.addListener(async function() {
   console.log("new startup detected");
   await chrome.storage.local.set({"status":false});
});

更新了清單

{
   "manifest_version": 3,

   "name": "Auto_Select",
   "description": "This extension auto selects Mturk HITs",
   "version": "1.0.12",

   "action": {
     "default_icon": "auto_select.png",
     "type": "module",
     "default_popup": "auto_select.html"
   },
   "permissions": [
     "tabs",
     "activeTab",
     "storage",
     "contextMenus",
     "tts"
   ],
   "host_permissions": [
      "<all_urls>"
   ],
   "background": {
   "service_worker": "auto_select.js"
  },
  "content_security_policy": {
     "extension_pages": "script-src 'self'; object-src 'self'; script-src-elem 'self'"
  }
}

我假設您想檢測一個新的 session 的開始,並且您想在服務工作者中檢測它。

這就是為什么你應該使用恰當命名的chrome.storage.session

以下擴展在chrome.storage.session中獲取並設置一個虛擬密鑰,以檢測新 session 的開始。

如何驗證擴展是否正常工作:

  1. 加載擴展
  2. 檢查服務人員。
  3. 控制台應顯示文本“會話已開始”。
  4. 關閉 DevTools window,這樣 service worker 就不會保持活動狀態。
  5. 等待 Service Worker 變為非活動狀態。
  6. 再次檢查 service worker。
  7. 控制台現在應該顯示文本“session is already running”。
  8. 如果您關閉 Chrome 並再次打開它,Service Worker 控制台應該會再次顯示文本“session has started”。

清單.json

{
    "manifest_version": 3,
    "name": "Detect Session Start",
    "version": "1.0.0",
    "permissions": [
        "storage"
    ],
    "background": {
        "service_worker": "background.js"
    }
}

背景.js

(async () => {
    let { started } = await chrome.storage.session.get("started");
    if (started === undefined) {
        console.log("session has started");
        await chrome.storage.session.set({ started: true });
    }
    else {
        console.log("session is already running");
    }
})();

您需要使用chrome.windows.onCreated

chrome.runtime.onStartup

當安裝了此擴展的配置文件首次啟動時觸發。

chrome.windows.onCreated

創建 window 時觸發。

在此處輸入圖像描述

清單.json

{
  "name": "hoge",
  "version": "1.0",
  "manifest_version": 3,
  "permissions": ["storage"],
  "background": {
    "service_worker": "background.js"
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM