Chrome扩展程序 - 更改弹出窗口

时间:2015-04-02 11:52:32

标签: javascript html google-chrome google-chrome-extension

我有一个Chrome扩展程序,允许用户登录系统。当用户未登录时,我希望在打开扩展程序时显示默认页面,但如果他们已经登录,我希望在打开扩展程序时显示不同的弹出窗口。

我现在通过javascript实现这一目标,但有时会出现延迟。在脚本执行之前,原始页面将立即闪烁并切换到不同的页面。有没有更好的方法来实现这个?

1 个答案:

答案 0 :(得分:3)

您应该关注chrome.browserAction API。

具体做法是:

  

chrome.browserAction.setPopup(object details)

     

当用户点击浏览器操作的图标时,将html文档设置为弹出窗口。

因此,要设置弹出窗口,您可以这样称呼它:

chrome.browserAction.setPopup({popup: "logged_in.html"});

当您了解用户已登录时,您可以执行此操作;但是,您可能希望在重新启动扩展时恢复此状态。为此,您应该保存您在持久存储中登录(或退出)的事实,并在初始化时调用此函数。 event script是一个很好的地方。

// wherever you can do this in your code
function login_success() {
  /* ... */
  chrome.storage.local.set({logged_in: true});
  chrome.browserAction.setPopup({popup: "logged_in.html"});
}

function login_failure() {
  /* ... */
  chrome.storage.local.set({logged_in: false});
  chrome.browserAction.setPopup({popup: "default.html"});
}

// This goes into eventPage.js and executes once on extension load
chrome.storage.local.get("logged_in", function(data) {
  if(data.logged_in)
    chrome.browserAction.setPopup({popup: "logged_in.html"});
});