javascript - Chrome 扩展 - 更改弹出窗口

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

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

我目前正在通过 javascript 实现此目的,但有时会有时间延迟。在脚本执行并切换到不同页面之前,原始页面会闪烁一瞬间。有没有更好的方法来实现它?

最佳答案

您应该查看 chrome.browserAction API。

具体来说:

chrome.browserAction.setPopup(object details)

Sets the html document to be opened as a popup when the user clicks on the browser action's icon.

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

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"});
});

关于javascript - Chrome 扩展 - 更改弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29412317/

相关文章:

javascript - Redis key 未正确创建

javascript - 获取 Canvas X 和 Y 坐标并显示在屏幕上

javascript - R网络D3包: forceNetwork() coloring

在 Chrome 和 Firefox 中位于固定位置 div 之上时无法选择 HTML 文本

html - 自定义错误文件 : AccessDenied Message 的 AWS CloudFront 问题

javascript - Chrome Webstore 内联安装与 AngularJS

javascript - <p> 元素中的数组,每个到换行符?

html - css冲突扩展宽度

javascript - Google Chrome Object.defineProperty 中的错误行为?

javascript - 显然缺少 ) 在除 Safari 之外的所有 jQuery :not(. 类中得到修复?