#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);
}