触发问题 chrome.browserAction.onClicked.addListener

Issue with triggering chrome.browserAction.onClicked.addListener

我有一个脚本可以查找 cookie 以确定用户是否有网站的活动会话。根据此信息,它会显示相应的弹出 HTML 页面。每次单击扩展图标时,我都希望它 运行,但它似乎只有 运行 一次。我想我可能遗漏了一些东西。

cookieChecker.js

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.cookies.get({url: 'https://somesite.com', name: 'TOKEN'}, function(cookie) {
  if (cookie) {
   console.log('Cookie', cookie);
   var decoded = jwt_decode(cookie.value);
   var expired = isExpired(decoded);
   if (expired === false) {
    chrome.browserAction.setPopup({popup: 'loggedIn.html'});
      }
   else {
        chrome.browserAction.setPopup({popup: 'loggedOut.html'});
      }
    }
  else {
      chrome.browserAction.setPopup({popup: 'loggedOut.html'});
    }
  })

  function isExpired(token) {
    var date = getExpirationDate(token);
    if (date < (Date.now() / 1000)) {
      console.log(date, Date.now());
      return true;
    }
    return false;
  }

  function getExpirationDate(token){
    if (!token.exp) {
      return null;
    }
    var expDate = token.exp;
    return expDate;
  }
});

manifest.json

{
  "manifest_version": 2,

  "name": "Getting started example",
  "description": "This extension shows a Google Image search result for the current page",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png"
  },
  "permissions": [
"activeTab",
"cookies",
"storage",
"https://ajax.googleapis.com/",
"https://somesite.com"
  ],
  "background": {
    "scripts": ["jwt-decode.min.js","cookieChecker.js"]
  }
}

事件 browserAction.onClicked 只有在没有为浏览器操作按钮定义弹出窗口时才会触发。使用 browserAction.setPopup({popup:... 设置弹出页面后(或者如果您在 manifest.json 中定义了 default_popup),browserAction.onClicked 事件不会因任何后续用户单击浏览器操作按钮而触发。相反,当单击浏览器操作按钮时,将打开您的弹出窗口。

如果您想 return 接收 browserAction.onClicked 事件,请在代码的其他地方(例如在弹出窗口的 JavaScript 中),您需要将弹出窗口设置为 '' 与:

chrome.browserAction.setPopup({popup: ''});