Все страницы расширения (фоновая страница, всплывающее окно, информационная панель, действие страницы все выполняются внутри одного расширения. Думайте об этом как о веб-странице с одним доменом. И этот домен является вашим идентификатором расширения. Каждая из этих страниц расширения похожа наобычная страница (аналогично при разработке веб-сайта).
Все страницы расширения (упомянутые выше) могут легко взаимодействовать друг с другом. Для этого есть несколько способов:
chrome.extension.getBackgroundPage ()
Вы делаете это напрямую! Я использую этот подход всегда, когда могу. На мой взгляд, он чище.
var bkg = chrome.extension.getBackgroundPage();`
bkg.ping();`
chrome.extension.onRequest.addListener и chrome.extension.sendRequest
Как показано ниже, вы можете использовать расширение сообщений дляпередавать информацию также. Я использую этот подход, когда я хочу, чтобы он был ориентирован на события. Я редко использую это на страницах расширения.
popup.html
chrome.extension.sendRequest({method: 'ping'}, function(response) {
// response.result
});
background_page.html
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if (request.method == 'ping') {
sendResponse({result: 'pong'});
}
});
Теперь есть разница между "страницами расширения" и " сценариями содержимого ".Пожалуйста, внимательно прочитайте этот документ, чтобы понять его.Сценарий содержимого не является страницей расширения, вы не можете делать то, что делают страницы расширения.Вы не можете напрямую общаться ни с одной из упомянутых выше страниц.Сценарии содержимого - это файлы JavaScript, которые запускаются в контексте веб-страниц, а не страниц расширения.Это важное различие, которое нужно распознать.
Таким образом, для связи между страницами расширения и скриптом контента вам необходимо использовать Messaging .На этой странице много информации, я настоятельно рекомендую вам прочитать ее.Это очень похоже на то, как мы использовали обмен сообщениями (шаг 2 выше), но отличается только от того, как вы отправляете запрос.Вам нужно будет использовать chrome.tabs.sendRequest , поскольку вам нужно отправить один запрос к скрипту содержимого со страницы расширения (фон, всплывающее окно, страница и т. Д.).Вам нужно знать идентификатор вашей вкладки, чтобы сделать это.Пожалуйста, обратитесь к Tab API для получения дополнительной информации.
Если ваше расширение очень часто связывается с вашим скриптом контента, вы можете использовать соединения Long Lived, что довольно хорошо объясняется в разделе «Обмен сообщениями».понравилось выше.
Я ответил на многие вопросы, а также на других людей относительно подобных вопросов.Поскольку вы имеете опыт работы с JavaScript, я настоятельно рекомендую вам ознакомиться с документацией, в ней есть все, что вам нужно.Прочитайте API, и я надеюсь, что вы теперь понимаете разницу между Content Script и Extension Pages, и связь между ними происходит через Extension Messaging.