Как получить разрешение на доступ к своим собственным ресурсам расширений (определенной странице)? - PullRequest
6 голосов
/ 02 апреля 2012

Из-за недавних изменений в Chrome API мой плагин выдает эту ошибку:

Ошибка во время tabs.executeScript: невозможно получить доступ к содержимому URL "Хром-расширение: //ecfgljdfndkhhbmhcnelbpnhkflgiokp/cm_signature_editor.html". Манифест расширения должен запрашивать разрешение на доступ к этому хосту.

Это никогда не было так. Теперь мне интересно, как я получу URL расширения chrome в его файл манифеста:

Я знаю, что могу получить URL или ресурс в моем расширении, например:

chrome.extension.getURL('/manifest.json')

Но я не знаю, как это может работать в файле манифеста.

Есть ли другой способ заставить этот код работать?

chrome.tabs.executeScript(null, {code:function_to_execute}, function() {
    // callback
});

Что интересно, даже когда я жестко кодирую URL-адрес Chrome, он не работает (я получаю ту же ошибку)

"permissions" : [
    "tabs",
    "contextMenus",
    "chrome-extension://ecfgljdfndkhhbmhcnelbpnhkflgiokp/*"
  ],

Ответы [ 4 ]

1 голос
/ 07 мая 2012

Использование chrome.extension.getViews() может быть полезным.

1 голос
/ 03 апреля 2012

Я думаю, вы не можете таким образом внедрить скрипт в страницу расширения. Вы должны включить скрипт на странице, просто написав его в своем HTML-файле расширения. И установите связь между страницами расширений, используя chrome.extension.sendRequest и chrome.extension.onRequest

0 голосов
/ 29 марта 2018

Я столкнулся с той же проблемой, ниже я сделал следующее:

  • Для скрипта создал отдельный js и прикрепил его к странице, на которой выполнялся executeScript.
  • Для данных, установите его в хранилище localalstorage и получите доступ к нему в только что созданном файле js
.
0 голосов
/ 03 апреля 2012

Может быть, я знаю, в чём ваша проблема;) Есть два способа внедрить скрипт содержимого в chrome.tabs.executeScript:

  • строка кода - работает аналогично eval
  • имя файла- поэтому, если вы хотите выполнить js-файл, который у вас есть в вашем каталоге расширений, просто передайте его имя {file: 'js/script.js'}

Кроме того, вы должны добавить надлежащий хост сайта в поле полномочий манифеста, например, если вы хотитевыполнить скрипт содержимого в http://example.com/page.html добавить example.com хост

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