簡介
本文解決了從後台腳本發送訊息的挑戰到內容腳本,然後到注入腳本。儘管採用了典型的方法,但訊息發送過程在後台到內容腳本階段陷入停滯。
根本原因在於內容腳本的注入機制。與預期相反,Chrome 不會在擴展(重新)加載時自動將內容腳本注入現有選項卡。因此,當後台腳本嘗試向當前選項卡發送訊息時,沒有可用的偵聽器來接收該訊息。
解決方案1:使用' 進行條件注入EnsureSendMessage'
此方法首先需要ping 選項卡以檢查它是否準備好接收訊息。如果沒有,則以程式方式註入內容腳本,使其能夠接收並回應來自後台腳本的訊息。
解決方案 2:初始化時注入
另一種方法就是簡單地在擴充載入時不加區別地註入內容腳本。如果腳本程式碼可以處理多次運行或頁面完全加載後,這是安全的。
解決方案 3:透過瀏覽器操作選擇性注入
對於訊息的情況傳送應該發生在特定的使用者操作上,可以利用瀏覽器操作。透過將訊息傳送程式碼包裝在 onClicked 偵聽器中,僅當使用者明確觸發瀏覽器操作時才會發生注入和通訊。
最後,解決一個問題很重要擴展重新加載後仍然存在的孤立內容腳本的潛在問題。這些腳本可能會幹擾新註入實例的正確執行。為了緩解這種情況,內容腳本可以實現心跳機制,以透過背景腳本驗證其活動狀態。只有在收到後台的肯定確認後,內容腳本才會執行操作或處理頁面事件。
以上是如何有效地從後台向注入腳本發送訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!