触发问题 chrome.browserAction.onClicked.addListener
Issue with triggering chrome.browserAction.onClicked.addListener
我有一个脚本可以查找 cookie 以确定用户是否有网站的活动会话。根据此信息,它会显示相应的弹出 HTML 页面。每次单击扩展图标时,我都希望它 运行,但它似乎只有 运行 一次。我想我可能遗漏了一些东西。
cookieChecker.js
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;
}
});
manifest.json
{
"manifest_version": 2,
"name": "Getting started example",
"description": "This extension shows a Google Image search result for the current page",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png"
},
"permissions": [
"activeTab",
"cookies",
"storage",
"https://ajax.googleapis.com/",
"https://somesite.com"
],
"background": {
"scripts": ["jwt-decode.min.js","cookieChecker.js"]
}
}
事件 browserAction.onClicked
只有在没有为浏览器操作按钮定义弹出窗口时才会触发。使用 browserAction.setPopup({popup:...
设置弹出页面后(或者如果您在 manifest.json 中定义了 default_popup
),browserAction.onClicked
事件不会因任何后续用户单击浏览器操作按钮而触发。相反,当单击浏览器操作按钮时,将打开您的弹出窗口。
如果您想 return 接收 browserAction.onClicked
事件,请在代码的其他地方(例如在弹出窗口的 JavaScript 中),您需要将弹出窗口设置为 ''
与:
chrome.browserAction.setPopup({popup: ''});
我有一个脚本可以查找 cookie 以确定用户是否有网站的活动会话。根据此信息,它会显示相应的弹出 HTML 页面。每次单击扩展图标时,我都希望它 运行,但它似乎只有 运行 一次。我想我可能遗漏了一些东西。
cookieChecker.js
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;
}
});
manifest.json
{
"manifest_version": 2,
"name": "Getting started example",
"description": "This extension shows a Google Image search result for the current page",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png"
},
"permissions": [
"activeTab",
"cookies",
"storage",
"https://ajax.googleapis.com/",
"https://somesite.com"
],
"background": {
"scripts": ["jwt-decode.min.js","cookieChecker.js"]
}
}
事件 browserAction.onClicked
只有在没有为浏览器操作按钮定义弹出窗口时才会触发。使用 browserAction.setPopup({popup:...
设置弹出页面后(或者如果您在 manifest.json 中定义了 default_popup
),browserAction.onClicked
事件不会因任何后续用户单击浏览器操作按钮而触发。相反,当单击浏览器操作按钮时,将打开您的弹出窗口。
如果您想 return 接收 browserAction.onClicked
事件,请在代码的其他地方(例如在弹出窗口的 JavaScript 中),您需要将弹出窗口设置为 ''
与:
chrome.browserAction.setPopup({popup: ''});