【问题标题】:Multiple background scripts in a Google Chrome extension?Google Chrome 扩展程序中有多个后台脚本?
【发布时间】:2021-05-27 16:22:06
【问题描述】:

我的任务是创建一个 Google Chrome 扩展程序。到目前为止,一切正常。但是,我希望能够使用多个后台脚本(我的意思是
"background" : {"scripts" : ["background.js"]},,如果我说的不清楚的话)而不是创建多个扩展。这可能吗?

问候,

【问题讨论】:

  • 为什么要这样做?由于background.scripts 是一个数组,我希望它可以工作。你试过什么?
  • 还没试过。就是想知道能不能实现。如何测试background:{"scripts": ["background.js","bg.js"]}, 是否有效?另外,我有一个像if the keyword is foo, do this; if the keyword is bar, do that 这样的结构。这可能吗?
  • 似乎比在 Stack Overflow 上提问更容易。

标签: google-chrome-extension


【解决方案1】:

According to the documentation:

扩展系统将生成一个背景页面,其中包括脚本属性中列出的每个文件。

所以是的,它应该可以工作。只需声明多个脚本:

...
"background": {
  "scripts": [
    "background.js",
    "backgroundone.js",
    "backgroundtwo.js"
  ]
},
...

所有这些脚本都可以像加载到同一个页面一样工作;它们都将共享相同的上下文。

【讨论】:

  • 请记住,脚本将在相同的上下文中执行,就好像它们都加载在一个页面中一样。
  • 您应该注意“脚本”数组中的顺序可能很重要,因为它们是按顺序执行的。因此,如果“background.js”立即依赖于“backgroundtwo.js”放在窗口上的东西,它将与示例中的顺序中断。
  • 假设我想要两个不同的背景脚本来处理两个不同的事情。这两个后台脚本会相互交互还是相互减慢?我的两个后台脚本都与效率和速度有很大关系,我希望每个人都可以在那里编写自己的脚本,而不会互相拖慢。 @亚伯拉罕
  • 有没有办法在清单版本 3 中使用多个脚本?
【解决方案2】:

在清单版本 3 中:

---------manifest.json

"background": {
    "service_worker": "bg-wrapper.js"
}

---------bg-wrapper.js
try {
  importScripts('background.js');
} catch (error) {
  console.error(error);
}

【讨论】:

    猜你喜欢
    • 2013-10-18
    • 2018-04-11
    • 2017-03-30
    • 2011-03-28
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多