Переменные сценария общего доступа к расширениям Chrome

Я работаю над расширением Chrome, в котором есть 2 файла сценария. Один прикреплен к manifest.json как content_scripts (скрипт страницы). И еще у меня есть файл сценария, прикрепленный к моему файлу надстройки popup.html (сценарий надстройки).

Когда я объявляю var в моем скрипте страницы, я пытаюсь вызвать его в моем дополнительном скрипте и получаю undeclared varible.

Могу ли я установить связь между двумя скриптами? Потому что, если я попытаюсь сделать все за один, он не сможет получить доступ к элементам противоположной страницы.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Ниже приведен простой пример:

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

Этот метод у меня не работает. Почему вы проверяете вкладку и окно? Это имеет значение? Мне просто нужно, чтобы мои переменные были доступны в обоих скриптах

Sammy7 17.03.2018 16:09

Сценарий содержимого и сценарий popup.html работают в разных контекстах, поэтому переменные друг друга не могут быть доступны для обоих. Единственный способ - общаться друг с другом с помощью сообщений. Проверка вкладки и окна гарантирует, что связь осуществляется на текущей активной вкладке. Надеюсь, теперь это ясно.

elegant-user 17.03.2018 16:34

Другие вопросы по теме