Bir Chrome uzantısı üreten bir proje üzerinde çalışıyorum. Bir arka plan sayfasında adında bir işlevim var checkingProcess
. Bu işlev, yeni bir sekme açıldığında veya sekme güncelleştirildiğinde yürütülür. (URL değişikliğini burada yakalamaya çalıştım.)
chrome.tabs.onActivated.addListener((activeInfo) => {
checkingProcess(activeInfo.tabId)
})
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
checkingProcess(tab.id)
})
Sonra checkingProcess
işlev, veri işleme ve API çağrıları için bazı işlevlerim var. Sonra pop-up'tan gelen bir mesaj almaya çalıştım. Bu ileti, açılır pencerenin kullanıcı tarafından açıldığını gösterir.
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.msg === 'popup_opened') {
sendResponse({
matches_length: response['matches'].length,
hostname: host,
})
}
chrome.runtime.lastError
})
Bundan sonra, açılır pencereye bir yanıt gönderir. Açılan pencerede mesajı dinlerim ve açılan pencerede yanıtı kullanırım.
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ı')
})
}, [])
Ancak, bu ileti işleminin yalnızca bir kez yürütüldüğünün farkındayım, ancak arka plandaki verilere aynı anda erişmek için birden çok kez çalıştırmam gerekiyor. Bunu nasıl yapabilirim?