То, что я пытаюсь сделать, это
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});
});
Он отлично работает во время моей первой установки и может вызывать учетные данные, которые я храню в локальном хранилище, из скрипта контента.
Задача
Моя проблема заключается в том, что если я перешел к расширению и отключил расширение, а затем снова включил его, я не могу обмениваться контентом и фоновыми сценариями, при сценарии содержимого ответ не определен, когда я вызываю функцию отправки сообщения, даже если локальное хранилище имеет токен и имя пользователя. Грустная часть, это будет работать нормально, только когда я проверяю background.js и открываю его все время. Это не сработает, когда я закрою всплывающее окно.
Есть ли какое-либо решение, позволяющее избежать этого искажения, например, выполнить фоновую страницу таким образом?