Я работаю над расширением Chrome, в котором есть 2 файла сценария. Один прикреплен к manifest.json как content_scripts (скрипт страницы). И еще у меня есть файл сценария, прикрепленный к моему файлу надстройки popup.html (сценарий надстройки).
Когда я объявляю var в моем скрипте страницы, я пытаюсь вызвать его в моем дополнительном скрипте и получаю undeclared varible.
Могу ли я установить связь между двумя скриптами? Потому что, если я попытаюсь сделать все за один, он не сможет получить доступ к элементам противоположной страницы.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете легко передавать значения из фона в сценарий содержимого, используя обмен сообщениями.
Ниже приведен простой пример:
manifest.json
{
"name": "test",
"version": "0.0.1",
"manifest_version": 2,
"description": "Test ",
"background": {
"scripts": [
"background.js"
]
},
"browser_action": {
"default_title": "Test "
},
"permissions": [
"*://*/*",
"tabs"
], "content_scripts" : [{
"matches" : ["*://*/*"],
"js" : ["content.js"]
}]
}
background.js
chrome.browserAction.onClicked.addListener(function(){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {data: "some value"});
});
});
content.js
chrome.extension.onMessage.addListener(handleMessage);
function handleMessage(request) {
console.info(request.data);
}
Сценарий содержимого и сценарий popup.html работают в разных контекстах, поэтому переменные друг друга не могут быть доступны для обоих. Единственный способ - общаться друг с другом с помощью сообщений. Проверка вкладки и окна гарантирует, что связь осуществляется на текущей активной вкладке. Надеюсь, теперь это ясно.
Этот метод у меня не работает. Почему вы проверяете вкладку и окно? Это имеет значение? Мне просто нужно, чтобы мои переменные были доступны в обоих скриптах