В настоящее время я пытаюсь передать сообщение из фонового сценария в сценарий содержимого при запуске (т.е. до нажатия значка расширения).
Я пробовал следующее (вдохновлено https://stackoverflow.com/a/23895822/10500893), но, похоже, оно не работает.
background.js
function preloadPopupScript(){
return new Promise(function(resolve, reject){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
chrome.tabs.executeScript(tabs[0].id, {file: "popup.js"},
function(){
if(chrome.runtime.lastError){
reject(Error("could not preload popup.js :("));
}else{
resolve();
}
});
});
});
}
chrome.runtime.onStartup.addListener(function(){
let preloadScript = preloadPopupScript();
preloadScript.then(function(){
let lastXHRresponse = chrome.storage.local.get("xhrResponse",
function(d){
if(chrome.runtime.lastError){
console.log("could not find past authentication data!");
return;
}
// GETS TO HERE
chrome.runtime.sendMessage({status: "hasPreviouslyLoggedIn"});
checkAccessToken();
chrome.runtime.sendMessage({status: "checkArtistReleases"});
});
});
});
popup.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
switch(request.status){
// THE BELOW CASE DOES NOT SHOW ANY SIGNS OF GETTING TRIGGERED
case "hasPreviouslyLoggedIn":
case "successfulLogin":
chrome.browserAction.setPopup({popup: "login_signedin.html"});
window.location.href = "login_signedin.html";
hasSignedIn = true;
chrome.runtime.sendMessage({action: "canCreateAlarm"});
break;
}
});
Есть ли какие-либо проблемы с этим кодом или я неправильно реализовал предлагаемое решение в https://stackoverflow.com/a/23895822/10500893?
Большое спасибо заранее !!!
(Также заранее прошу прощения за проблемы со стилем noob, так как я только что поднял JS>. <) </p>