登录后,Chrome扩展程序中的弹出窗口

时间:2015-07-03 17:04:42

标签: javascript google-chrome-extension popup

我正在尝试使用以下规范创建Chrome扩展程序:

  1. 安装扩展程序。 - >单击扩展图标。
  2. 每次单击图标时,后台脚本都会检查是否存在访问令牌。
  3. 如果访问令牌不存在(第一次用户就是这种情况),将显示一个单独的窗口(使用window.open())提示用户登录。
  4. 如果存在访问令牌,则单击图标后将显示chrome扩展程序弹出窗口。
  5. 在我当前的实现中,我没有在manifest.json中设置默认弹出窗口。如果后台脚本找到存在的访问令牌,则使用chrome.browserAction.setPopup设置弹出窗口。但是,只有在我点击两次图标后,弹出窗口才显示出来。我知道这是因为它在第一次点击时设置弹出窗口,然后在第二次点击时显示弹出窗口。但是,有没有办法让它在第一个显示?

    是否有更好的方法来实现此逻辑,因此每次检测到访问令牌时都不必一直设置弹出窗口,并且要求用户单击两次(在我看来这不是非常用户友好)?

    谢谢!

2 个答案:

答案 0 :(得分:3)

因此,经过一天的认真努力。我想出了一种方法。因此,唯一可行的方法是将Cookie中的accessToken设置为您的域,然后让chrome扩展程序跟踪该域的cookie。 chrome.cookies.onChanged中有一个事件-这使您可以跟踪任何已更改的cookie。

因此,步骤如下

  1. 将默认弹出窗口设置为登录/单一屏幕
    "browser_action":{"default_popup": "signin.html"},
  2. 在您的background.js中,您具有跟踪Cookie的功能-并基于该功能更新屏幕
  3. 还要检查用户是否已经登录了后台脚本的初始运行

查看我的要旨以了解更多信息-background.js

答案 1 :(得分:1)

可悲的是,正如你所描述的那样 - 不是

在某些情况下(包括你的)有talks about enabling you to open a popup programmatically,但是它们非常复杂,因此没有时间表。

但是,在您的情况下,这是一个相对简单的修复方法..

获得令牌后,您应立即致电setPopup,以便下次点击成功。

如果您需要验证该令牌有效,那么在弹出窗口打开后,最好这样做。如果它无效,请显示一个大的"登录"弹出窗口中的按钮而不是通常的内容。