首页 >web前端 >js教程 >如何解决 Chrome 扩展程序中孤立脚本导致的通信问题?

如何解决 Chrome 扩展程序中孤立脚本导致的通信问题?

Susan Sarandon
Susan Sarandon原创
2024-11-01 00:22:29227浏览

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