Já jsem pracoval na projektu, který vytváří Chrome rozšíření. V pozadí stránky mám funkci s názvem checkingProcess
. Tato funkce je proveden, když novou kartu je otevřen, nebo je aktualizován kartu. (Snažila jsem se zachytit změnu URL zde.)
chrome.tabs.onActivated.addListener((activeInfo) => {
checkingProcess(activeInfo.tabId)
})
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
checkingProcess(tab.id)
})
Pak, v checkingProcess
funkce, mám některé funkce pro zpracování dat a volání API. Pak jsem se snažil se zobrazit zpráva, že pochází z popup. Tato zpráva představuje, že dav byl otevřen uživatelem.
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.msg === 'popup_opened') {
sendResponse({
matches_length: response['matches'].length,
hostname: host,
})
}
chrome.runtime.lastError
})
Poté odešle odpověď na popup. V pop-up, poslouchám zprávy a odezvy použijte v místní nabídce.
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ı')
})
}, [])
Nicméně, jsem si uvědomil, že tato zpráva proces se provede pouze jednou, ale musím udělat to několikrát, aby přístup k datům v pozadí současně. Jak to mám udělat, že?