登录后在 chrome 扩展中弹出窗口

lla*_*s48 0 javascript popup google-chrome-extension

我正在尝试创建一个具有以下规格的 Chrome 扩展:

  1. 安装扩展。--> 单击扩展图标。
  2. 每次单击该图标时,后台脚本都会检查访问令牌是否存在。
  3. 如果访问令牌不存在(这是第一次用户的情况),将显示一个单独的窗口(使用 window.open())提示用户登录。
  4. 如果存在访问令牌,则单击该图标后应该会显示一个 chrome 扩展弹出窗口。

在我当前的实现中,我没有在manifest.json 中设置默认弹出窗口。如果后台脚本发现存在访问令牌,它将使用 chrome.browserAction.setPopup 设置弹出窗口。但是,只有在我单击该图标两次后才会显示弹出窗口。我知道这是因为它在第一次单击时设置弹出窗口,然后在第二次单击时显示它。但是,有什么办法让它显示在第一个吗?

有没有更好的方法来实现这个逻辑,这样我就不必在每次检测到访问令牌时都设置弹出窗口并要求用户单击两次(在我看来,这对用户来说不是很友好)?

谢谢!

小智 5

经过一天的认真努力。我想出了一个方法来做到这一点。因此,唯一可能执行此操作的方法是将 cookie 中的 accessToken 设置为您的域,并让 chrome 扩展跟踪该域的 cookie。有一个事件chrome.cookies.onChanged- 这可以让您跟踪任何已更改的 cookie。

所以步骤如下

  1. 将默认弹出窗口设置为登录/注册屏幕
    "browser_action":{"default_popup": "signin.html"},
  2. 在你的background.js中,你有一个函数来跟踪你的cookie - 并根据它更新你的屏幕
  3. 还要检查用户是否已经在后台脚本的初始运行时登录

检查我的要点以获取更多理解-background.js