Почему chrome.extension.getBackgroundPage () возвращает ноль? - PullRequest
7 голосов
/ 01 ноября 2011

У меня есть файл manifest.json , который выглядит следующим образом:

{
  "name": "Zend Debugger Extension",
  "version": "0.1",
  "background_page": "background.html",
  "permissions": [
    "cookies", "tabs", "http://*/*", "https://*/*"
  ],
  "browser_action": {
    "default_title": "Launch Zend Debugger",
    "default_icon": "icon.png",
    "popup": "popup.html"
  }
}

Вот мой background.html :

<html>
    <script>
    function testRequest() {
        console.log("test Request received");
    }
    </script>
</html>

И моя popup.html :

<script>
function debug(target) {
    if (target.id == 'thisPage') {
        console.log('sending request');
        chrome.extension.getBackgroundPage().testRequest();
    }
}
</script>

<div onclick="debug(this)" id="thisPage">Current Page</div>

Однако страница background.html не доступна.Я получаю эту ошибку:

Uncaught TypeError: Cannot call method 'testRequest' of null

Когда я проверяю chrome.extension.getBackgroundPage(), я получаю нулевое значение.Я думаю, что допустил ошибку в своем файле манифеста, но не вижу, что сделал неправильно.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 30 января 2015

Вот еще один ответ с большим количеством опций:

chrome.extension.getBackgroundPage () возвращает ноль через некоторое время

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

Если ваше расширение использует extension.getBackgroundPage, переключитесь на runtime.getBackgroundPage вместо. Более новый метод является асинхронным, поэтому что он может запустить страницу события, если это необходимо, перед ее возвратом.

0 голосов
/ 01 ноября 2011

Вам не хватает фонового разрешения, посмотрите на мой файл manifest.json с моим расширением chrome:

{
    "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["jquery.js", "asserts.js"]
    }
  ],
  "name": "Test Extension",
  "version": "1.0",
  "description": "A test extension to inject js to a webpage.",
  "background_page": "background.html",
  "options_page": "options.html",
  "browser_action": {
    "default_icon": "icon.png",
    "popup": "popup.html"
  },
  "permissions": [
    "tabs", 
    "http://*/*", "https://*/*", "<all_url>", "background"
  ]
}

РЕДАКТИРОВАТЬ: Вы уверены, что у вас есть background.htmlфайл в той же папке, что и все файлы вашего расширения chrome? и, если это так, попробуйте перезагрузить расширение со страницы управления расширениями, я помню, однажды была ошибка, из-за которой мое расширение не перезагружалось, поэтому я обратился к инструментам разработчика длямою фоновую страницу и выполнил window.location.reload(true); с консоли, которая исправила это.Пожалуйста, ответьте, если это сработало, я буду продолжать исследовать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...