Запустите расширение Chrome на определенных веб-сайтах. - PullRequest
0 голосов
/ 01 ноября 2018

Я пишу расширение Chrome в стиле купонов и хочу, чтобы оно работало только на определенных сайтах (более 300 сайтов). Я читал об указании URL-адресов сайтов в content_scripts, но это не кажется практичным, особенно если мне нужно его обновить. Вот мой сценарий:

manifest.json

{
      "name": "Example",
      "description": "description",
      "version": "1.0",
      "manifest_version": 2,

      "background": 
      {
        "scripts": ["js/background.js", "js/eventPage.js", "js/jquery- 
         3.2.1.min.js"],
        "persistent":false
      },

      "page_action": {
        "default_icon":"img/32icon.png"
      },

      "content_scripts": [
        {
        "matches": ["https://*/*"],
        "js": ["js/sites_cs.js", "js/jquery-3.2.1.min.js"]
        }
      ],

       "permissions": [
       "tabs",
       "http://*/*",
       "https://*/*",
       "activeTab"
     ]
    }

1 Ответ

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

Вы можете иметь массив с URL-адресами, которые вы хотите сопоставить, и программным способом внедрить ваши скрипты контента только на соответствующие веб-страницы. Например, удалите запись content_scripts файла manifest.json и включите этот код в фоновый скрипт:

background.js

// myURLs contains the websites where you want your content script to run
const myURLs = ['www.example1.com','www.anotherone.com','www.athird.one'];

chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
    if (changeInfo.status == 'complete' && myURLs.some(url => tab.url.includes(url))) {
        chrome.tabs.executeScript(tabId,{file:'js/jquery-3.2.1.min.js'},()=>{
            chrome.tabs.executeScript(tabId,{file:'js/sites_cs.js'});
        });
    }
});

Таким образом, вам просто нужно держать переменную myURLs обновленной с нужными URL-адресами, и ваши скрипты контента будут добавляться только на эти сайты.

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