我想做的是
Popup.html
在popup.html中,我创建了一个登录页面,在用户单击“登录”按钮后,我当时已成功登录到本地存储中,并存储了我的令牌和用户名。
content.js
chrome.runtime.sendMessage({greeting: "hello"}, function (response) {
// console.log('Data to Call', response, dialingNumber);
if (response == undefined || response == null) {
window.confirm('Please LogIn...!');
}
else {
// ....
}
background.js
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
var credentials = localStorage.getItem('voi-auth').split("|");
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: credentials});
});
在我第一次安装时,它工作正常,能够从内容脚本中调用存储在本地存储中的凭据。
问题
我的问题是,如果我转到该扩展名并禁用该扩展名然后再次启用它,则我无法在内容脚本和后台脚本之间进行通信,即使我调用了send message函数,内容脚本中的响应也未定义本地存储具有令牌和用户名。可悲的是,只有当我检查background.js并将其一直打开时,它才能正常工作。当我关闭弹出窗口时,它将不起作用。
是否有任何解决方案可以避免这种情况,例如执行后台页面?