我正在尝试使用以下规范创建Chrome扩展程序:
在我当前的实现中,我没有在manifest.json中设置默认弹出窗口。如果后台脚本找到存在的访问令牌,则使用chrome.browserAction.setPopup设置弹出窗口。但是,只有在我点击两次图标后,弹出窗口才显示出来。我知道这是因为它在第一次点击时设置弹出窗口,然后在第二次点击时显示弹出窗口。但是,有没有办法让它在第一个显示?
是否有更好的方法来实现此逻辑,因此每次检测到访问令牌时都不必一直设置弹出窗口,并且要求用户单击两次(在我看来这不是非常用户友好)?
谢谢!
答案 0 :(得分:3)
因此,经过一天的认真努力。我想出了一种方法。因此,唯一可行的方法是将Cookie中的accessToken设置为您的域,然后让chrome扩展程序跟踪该域的cookie。 chrome.cookies.onChanged
中有一个事件-这使您可以跟踪任何已更改的cookie。
因此,步骤如下
"browser_action":{"default_popup": "signin.html"},
查看我的要旨以了解更多信息-background.js
答案 1 :(得分:1)
可悲的是,正如你所描述的那样 - 不是还。
在某些情况下(包括你的)有talks about enabling you to open a popup programmatically,但是它们非常复杂,因此没有时间表。
但是,在您的情况下,这是一个相对简单的修复方法..
获得令牌后,您应立即致电setPopup
,以便下次点击成功。
如果您需要验证该令牌有效,那么在弹出窗口打开后,最好这样做。如果它无效,请显示一个大的"登录"弹出窗口中的按钮而不是通常的内容。