ฉันทำงานให้โครงการซึ่งได้เป็น Chrome เลื่อนเวลาออกไปหน่อย อยู่ในพื้นหลังของหน้าผมมีฟังก์ชันที่ชื่อ checkingProcess
. ฟังก์ชันนี้คือประหารตอนที่แท็บใหม่คือเปิดหรือเป็นแท็บเป็นปรับปรุงเรียบร้อยแล้ว (ฉันพยายามจะจับการเปลี่ยนแปลงขอที่อยู่ URL ที่นี่)
chrome.tabs.onActivated.addListener((activeInfo) => {
checkingProcess(activeInfo.tabId)
})
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
checkingProcess(tab.id)
})
งั้น,ใน checkingProcess
ฟังก์ชันฉันมีบางอย่าฟังก์ชันสำหรับข้อมูลการจัดการและรูปแบบ api โทรมา งั้นฉันพยายามที่จะได้รับข้อความนั้นออกมาจากหน้าต่างผุด. ข้อความนี้เป็นตัวแทนนั่นหน้าต่างผุดถูกเปิดออกมาโดยผู้ใช้
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.msg === 'popup_opened') {
sendResponse({
matches_length: response['matches'].length,
hostname: host,
})
}
chrome.runtime.lastError
})
หลังจากนั้นมันเป็นการส่งการตอบสนองไปที่หน้าต่างผุด. ในแบบผุดขึ้นฉันต้องฟังข้อความและใช้การตอบสนองในแบบผุดขึ้น.
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ı')
})
}, [])
อย่างไรก็ตามฉันรู้ว่าข้อความนี้โพรเซสเดียวที่ประหารครั้งหนึ่งแต่ฉันจำเป็นต้องวิ่งมันหลายครั้งเพื่อเข้าถึงข้อมูลอยู่เบื้องหลังพร้อมกันได้ ทำไมฉันต้องทำอย่างนั้น?