【问题标题】:How do scripts communicate with each other in a multi-page chrome extension?多页 chrome 扩展中的脚本如何相互通信?
【发布时间】:2021-07-31 05:08:48
【问题描述】:

我有一个background.js 脚本,它具有存储功能、API 调用和所有主要功能。

我的 chrome 扩展程序有多个页面。我希望这些页面中的每一个都调用background.js 的函数。

我应该看哪些概念?

【问题讨论】:

  • 不要过于复杂:这些脚本可能很小,因此您应该简单地将它们包含在每个页面中。许多人喜欢直接通过 getBackgroundPage() 调用来调用后台函数,但这通常是糟糕的设计,因为它会导致内存泄漏。有些人使用 chrome.runtime 消息传递,但这可能过于复杂。附言根据扩展的功能,后台脚本甚至可能是不必要的。

标签: javascript google-chrome google-chrome-extension browser-extension


【解决方案1】:

由于您谈论的是多个页面,我将仅描述如何在弹出窗口中执行此操作。 According to Mozilla,弹出窗口只是指定为 HTML 文件,可以包含 CSS 和 JavaScript 文件,就像普通网页一样。不过,与普通页面不同的是,JavaScript 可以使用扩展程序有权访问的所有 WebExtension API。

因此您可以简单地将其包含在主脚本之前的<script> 标记中,如下所示:


    <head>
        <title>Your Extension</title>
        <script defer src="background.js"></script>
        <script defer src="your_script.js"></script>
    </head>

最好只在这个 background.js 中包含函数,因为就像任何普通页面一样,它只会运行文件中的所有内容。如果您想在内容或后台脚本中包含这些内容,请查看this StackOverflow question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 2022-01-21
    • 2023-03-10
    • 2015-10-29
    相关资源
    最近更新 更多