Ошибка при выполнении chrome.extension.getBackgroundPage () - PullRequest
2 голосов
/ 06 февраля 2012

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

Мне не нужнокнопка, поэтому не создали файл popup.html, который, я считаю, является совершенно необязательным.Это, конечно, до сих пор работало, просто внедряя файлы javascript.

Однако теперь я получаю следующую ошибку при выполнении chrome.extension.getBackgroundPage ():

Uncaught Error: chrome.extension.getBackgroundPageможет использоваться только в процессах расширения.Для получения дополнительной информации см. Документацию по сценариям содержимого.

Документация по сценариям содержимого, по-видимому, не выявила ничего плохого в моем подходе: http://code.google.com/chrome/extensions/content_scripts.html

Вот отредактированный манифест, который я использую:

{
"name": "My helper",
"version": "1.0", 
"description": "Tastes great",
"background_page": "background.html",
"content_scripts": [
    {
        "matches":["https://page.of.interest/*"],
        "run_at":"document_idle",
        "js":[ "jquery.js", "jquery-ui-1.8.17.custom.min.js", "my_content_script.js"],
        "css": [ "my_content_script.css" ]
    }
],
"permissions": [
  "background"
] 
}

Итак, я выполняю этот оператор внутри "my_content_script.js".Это НЕ считается частью процесса расширения?Могу ли я запустить это только для файла popup.html (или другого, возможно?)?

Если это так, то, возможно, проще использовать localalstorage, чем пытаться связаться через dom с расширениемпроцесс.

Надеюсь, я понял, несмотря на мое незнание некоторых из этих понятий.

Ответы [ 2 ]

3 голосов
/ 06 февраля 2012

Я не думаю, что в документах прямо сказано, что вы не можете использовать chrome.extension.getBackgroundPage() из content_script, но из-за того, что content_script имеет разрешения, более ориентированные на страницу, на которой он запускается, доступ запрещен. В документах упоминается о нескольких методах, которые вы можете использовать.

В отличие от других API chrome. * Части chrome.extension могут использоваться скриптами содержимого:

Вам придется использовать передачу сообщений для связи между background_page и content_script.

2 голосов
/ 24 апреля 2012

Вы должны использовать chrome.cookies.get () в background.html , а затем выполнить связь между вашим сценарием содержимого и background.html для обмена данными cookie.

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