我有一个脚本,用于查找cookie以确定用户是否具有网站的活动会话。根据此信息,它显示相应的弹出HTML页面。我想在每次点击扩展图标时运行它,但它似乎只运行一次。我想我可能会遗漏一些东西。
cookieChecker.js
<connection-customization class='bigquery' enabled='true' version='10.0' >
<vendor name='bigquery' />
<driver name='bigquery' />
<customizations>
<customization name='connection-dialect' value='google-bql' />
</customizations>
</connection-customization>
的manifest.json
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.cookies.get({url: 'https://somesite.com', name: 'TOKEN'}, function(cookie) {
if (cookie) {
console.log('Cookie', cookie);
var decoded = jwt_decode(cookie.value);
var expired = isExpired(decoded);
if (expired === false) {
chrome.browserAction.setPopup({popup: 'loggedIn.html'});
}
else {
chrome.browserAction.setPopup({popup: 'loggedOut.html'});
}
}
else {
chrome.browserAction.setPopup({popup: 'loggedOut.html'});
}
})
function isExpired(token) {
var date = getExpirationDate(token);
if (date < (Date.now() / 1000)) {
console.log(date, Date.now());
return true;
}
return false;
}
function getExpirationDate(token){
if (!token.exp) {
return null;
}
var expDate = token.exp;
return expDate;
}
});
答案 0 :(得分:2)
如果没有为浏览器操作按钮定义弹出窗口,则仅会触发事件browserAction.onClicked
。使用browserAction.setPopup({popup:...
(或者如果您在 manifest.json 中定义了default_popup
)为弹出窗口设置页面后,browserAction.onClicked
事件将不会触发任何后续用户点击浏览器操作按钮。相反,当单击浏览器操作按钮时,将打开您的弹出窗口。
如果您想要在代码中的其他位置(例如在弹出窗口的JavaScript中)返回接收browserAction.onClicked
个事件,则需要将弹出窗口设置为''
:
chrome.browserAction.setPopup({popup: ''});