Pracuję nad projektem, który tworzy rozszerzenie Chrome. Na tle stronie u mnie jest funkcja o nazwie checkingProcess
. Ta funkcja jest uruchamiana po otwarciu nowej karty lub aktualizacji karty. (Próbowałem łapać zmiana adresu URL jest tutaj.)
chrome.tabs.onActivated.addListener((activeInfo) => {
checkingProcess(activeInfo.tabId)
})
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
checkingProcess(tab.id)
})
Następnie, w checkingProcess
funkcja, mam pewne funkcje dla obróbki danych i połączeń API. Następnie próbowałem dostać komunikat, który przychodzi z wyskakującego okna. Ten komunikat oznacza, że okno było otwarte przez użytkownika.
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.msg === 'popup_opened') {
sendResponse({
matches_length: response['matches'].length,
hostname: host,
})
}
chrome.runtime.lastError
})
Wtedy on wysyła odpowiedź na okno pop-up. W oknie podręcznym ja прослушиваю komunikat i używam odpowiedź w oknie pop-up.
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ı')
})
}, [])
Rozumiem jednak, że ten proces wysyłania wiadomości odbywa się tylko jeden raz, ale muszę go uruchomić kilka razy, aby jednocześnie uzyskać dostęp do danych w tle. Jak mogę to zrobić?