Je suis en train de travailler sur un projet qui produit une extension Chrome. Dans un fond de page, j'ai une fonction nommée checkingProcess
. Cette fonction est exécutée quand un nouvel onglet est ouvert ou un onglet est mis à jour. (J'ai essayé de rattraper le changement de l'URL ici.)
chrome.tabs.onActivated.addListener((activeInfo) => {
checkingProcess(activeInfo.tabId)
})
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
checkingProcess(tab.id)
})
Puis, dans la checkingProcess
fonction, j'ai quelques fonctions pour la manipulation des données et les appels d'API. Ensuite, j'ai essayé de recevoir un message qui vient de popup. Ce message signifie que le popup a été ouvert par l'utilisateur.
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.msg === 'popup_opened') {
sendResponse({
matches_length: response['matches'].length,
hostname: host,
})
}
chrome.runtime.lastError
})
Après cela, il envoie une réponse de la fenêtre contextuelle. Dans la fenêtre contextuelle, j'écoute le message et l'utilisation de la réponse dans la fenêtre contextuelle.
useEffect(() => {
chrome.runtime.sendMessage({ msg: 'popup_opened' }, (res) => {
setHostname(res['hostname'])
setMatchesLength(res['matches_length'])
console.log(res['hostname'], 'burası')
console.log(res['matches_length'], 'burası')
})
}, [])
Cependant, je me rends compte que ce message n'est exécuté qu'une fois, mais j'ai besoin de l'exécuter plusieurs fois pour accéder aux données en arrière-plan simultanément. Comment puis-je le faire?