首頁 >web前端 >js教程 >如何解決 Chrome 擴充功能中孤立腳本導致的通訊問題?

如何解決 Chrome 擴充功能中孤立腳本導致的通訊問題?

Susan Sarandon
Susan Sarandon原創
2024-11-01 00:22:29228瀏覽

How Do I Fix Communication Issues Caused by Orphaned Scripts in Chrome Extensions?

對Chrome 擴充功能中的孤立腳本進行故障排除

意外重新載入Chrome 擴充程式後進行復原可能會導致出現孤立腳本,從而導致內容之間的通訊問題腳本和擴充的其他部分。以下是刪除孤立腳本並恢復正常功能的解決方案:

殺死孤立腳本

孤立內容腳本仍然可以接收 DOM 訊息。透過視窗物件將訊息從新的工作內容腳本傳送到幻影內容腳本。收到訊息後,孤立腳本應該:

  • 取消註冊所有事件偵聽器(並取消所有全域變數)以符合垃圾回收條件。
  • 在內容中。 js:

    <code class="javascript">var orphanMessageId = chrome.runtime.id + 'orphanCheck';
    window.dispatchEvent(new Event(orphanMessageId));
    window.addEventListener(orphanMessageId, unregisterOrphan);
    
    // ... Register event listeners with named functions to preserve their references
    
    function unregisterOrphan() {
    // ... Unregister listeners and remove global variables
    }</code>

確保內容腳本注入

為了防止向孤立腳本發送訊息,您的popup.js 應檢查是否實時內容腳本在發送訊息之前運行:

<code class="javascript">async function sendMessage(data) {
  const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
  if (await ensureContentScript(tab.id)) {
    return await chrome.tabs.sendMessage(tab.id, data);
  }
}

async function ensureContentScript(tabId) {
  // ... Check if content script is running and inject it if not
}</code>

透過實施這些措施,您可以有效刪除孤立腳本、防止通訊問題並恢復Chrome 擴充功能的功能。

以上是如何解決 Chrome 擴充功能中孤立腳本導致的通訊問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn