Несколько фоновых сценариев в расширении Google Chrome?

#javascript #google-chrome-extension

#google-chrome-extension

Вопрос:

Мне было поручено создать расширение Google Chrome. Пока все работает нормально. Тем не менее, я хотел бы иметь возможность использовать несколько фоновых сценариев (я имею в виду
"background" : {"scripts" : ["background.js"]}, если то, о чем я говорю, неясно), а не создавать несколько расширений. Возможно ли это?

С уважением,

Комментарии:

1. Почему вы хотите это сделать? Поскольку background.scripts это массив, я ожидаю, что это сработает. Что вы пробовали?

2. Еще ничего не пробовал. Просто хотел узнать, можно ли это сделать. Как я могу проверить background:{"scripts": ["background.js","bg.js"]}, , работает ли? Кроме того, у меня есть такая структура, как if the keyword is foo, do this; if the keyword is bar, do that . Возможно ли это?

3. Кажется, было бы проще попробовать, чем задавать вопрос об этом в Stack Overflow.

Ответ №1:

Согласно документации:

Система расширений создаст фоновую страницу, которая включает каждый из файлов, перечисленных в свойстве scripts .

Так что да, это должно сработать. Просто объявите несколько сценариев:

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

Все эти сценарии будут работать так, как если бы они были загружены на одну страницу; все они будут использовать один и тот же контекст.

Комментарии:

1. Имейте в виду, что сценарии будут выполняться в том же контексте, как если бы все они были загружены на одной странице.

2. Следует отметить, что порядок в массиве «скрипты» может иметь значение, поскольку они выполняются по порядку. Поэтому, если «background.js » немедленно зависит от чего — то , что «backgroundtwo.js » помещает в окно, оно нарушит порядок в примере.

3. Допустим, мне нужны два разных фоновых сценария для двух разных вещей. Будут ли оба этих фоновых сценария взаимодействовать друг с другом или замедлять друг друга? Оба моих фоновых сценария имеют много общего с эффективностью и скоростью, и я хочу, чтобы каждый из них выполнял свой собственный сценарий, не замедляя друг друга. @abraham

4. Есть ли какой-нибудь способ использовать несколько сценариев в манифесте версии 3?

Ответ №2:

В версии манифеста 3:

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

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

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