Связь между фоновой страницей и всплывающей страницей в расширении Chrome

В настоящее время я пытаюсь написать расширение для Google Chrome, которое можно использовать для загрузки файлов.

Есть две страницы: фоновая страница и всплывающая страница. Всплывающая страница появляется, когда вы нажимаете значок справа от omni-bar. Вы можете указать файл, который хотите загрузить, с помощью стандартного HTML <input type='file' ... />.

После выбора файла и нажатия кнопки "Загрузить" имя (+ путь) файла должно быть отправлено на фоновое изображение. Это, потому что всплывающее окно может быть закрыто пользователем, просто щелкнув в другом месте на экране, который закрывает страницу.

Когда всплывающее окно активно, а фоновая страница загружает файл на сервер, всплывающее окно должно также получать информацию о ходе загрузки (0-100%) со справочной страницы и отображать эту информацию. По завершении пользователь должен увидеть URL-адрес.

Проблема в том, что я не знаю, как общаться между этими двумя страницами. В документации не очень понятно, как это работает. То, что я пробовал, выполняет функцию на фоновой странице под названием upload(filename) и помещает этот код во всплывающую страницу:

var BGPage = chrome.extension.getBackgroundPage();
BGPage.upload(the_filename);

Но это не сработало, функция не вызывалась.

Кто-нибудь знает, как я могу отправить имя файла со всплывающей страницы на фоновую страницу и как получить статус загрузки (и, наконец, ссылку) со справочной страницы, через всплывающее окно?

Спасибо заранее!

Ответ 1

Определите его как переменную.

background.js

upload = function(fileName) {
  console.log('Uploading', fileName);
}

popup.html

<script src="popup.js"></script>

popup.js

var BGPage = chrome.extension.getBackgroundPage();
BGPage.upload(the_filename);

Это должно сработать. Если это не так, проверьте свой инспектор на всплывающей и фоновой странице:

  • Popup Inspector: Щелкните правой кнопкой мыши по всплывающему окну и выберите "Осмотреть"
  • Фоновый инспектор. На странице настроек расширения chrome://расширения, включите режим разработчика (вверху справа вверху) и нажмите на background.js.

Он откроет инспектор, затем нажмите на консоль, чтобы увидеть сообщения об ошибках в консоли, чтобы помочь вам в дальнейшем, делая то, что я сказал выше, должен работать, я делаю это все время.