Как указать разные шаблоны соответствия для нескольких скриптов содержимого в файле manifest.json с одинаковым расширением - PullRequest
10 голосов
/ 25 апреля 2011

Вот сценарий:

Сценарий 1: Я хочу внедрить различные сценарии содержимого в разные страницы в зависимости от домена URL.

Например: Inject cs1.js сценарий содержимого в www.a.com, но внедрение cs2.js сценария содержимого в www.b.com.Оба скрипта содержимого cs1.js и cs2.js являются частью одного и того же расширения chrome. Как я могу указать разные шаблоны соответствия (в разделе «совпадения» при определении «content_scripts» в файле manifest.json), чтобы один сценарий былвнедряется на одной странице, а другая - на другой.

Сценарий 2: Как я могу упомянуть, если под поддоменом скажем www.a.com я хочу внедрить скрипт содержимого ввсе страницы в домене , кроме www.b.a.com (все другие субдомены должны быть внедрены с помощью скрипта контента).Как указать шаблон соответствия для этого случая.

Заранее спасибо.

Ответы [ 2 ]

9 голосов
/ 26 апреля 2011

Указание content_scripts в manifest.json немного ограничивает. Несмотря на то, что вы можете указать разные шаблоны соответствия, вы можете выполнить только один возможный набор файлов.

Чтобы достичь того, что вы хотите, вам нужно настроить background_page, который может интерпретировать URL-адреса страниц и выполнять сценарии содержимого по своему усмотрению.

Три различных метода могут быть:

  1. Используйте манифест content_scripts, чтобы сопоставить все возможные URL-адреса, и выполните простой скрипт содержимого, чтобы отправить запрос сообщения на фоновую страницу с помощью chrome.extension.sendRequest(). Фоновая страница прослушивает сообщения с chrome.extension.onRequest.addListener(), получает сообщение, интерпретирует URL вкладки с sender.tab.url (или отправляет сообщение вкладки window.location.hostname, возможно, проще), затем решает, какие сценарии содержимого следует выполнить ввести на вкладку с помощью chrome.tabs.executeScript().

    или

  2. Просто попросите background_page прослушать chrome.tabs.onCreated.addListener() и chrome.tabs.onUpdated.addListener(), чтобы получить URL-адрес вкладки, а затем решить, какие сценарии содержимого следует добавить в нее с помощью chrome.tabs.executeScript(). Для этого не нужно указывать content_scripts в манифесте.

    или

  3. Аналогично 1, но ваш скрипт манифеста content_scripts определит, что делать на основе текущего URL (снова может интерпретировать window.location.hostname), затем используйте chrome.extension.sendRequest() с сообщением для background_page указание, какие сценарии содержимого следует выполнить (то есть ваш background_page не определяет - оригинальный сценарий содержимого выполняет). Результат тот же.

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