Google Chrome манифест URL - PullRequest
       18

Google Chrome манифест URL

0 голосов
/ 07 января 2019

Я пытался найти лучшую альтернативу, но я не могу найти лучший способ сделать это.

Мой текущий манифест Chrome Extension содержит около 300 строк кода, которые включают URL-адреса такого типа.

   "http://www.google.com/webhp*", "https://www.google.com/webhp*",
    "http://www.google.ad/webhp*", "https://www.google.ad/webhp*",
    "http://www.google.ae/webhp*", "https://www.google.ae/webhp*",
    "http://www.google.com.af/webhp*", "https://www.google.com.af/webhp*",
    "http://www.google.com.ag/webhp*", "https://www.google.com.ag/webhp*",
    "http://www.google.com.ai/webhp*", "https://www.google.com.ai/webhp*",
    "http://www.google.am/webhp*", "https://www.google.am/webhp*",
    "http://www.google.co.ao/webhp*", "https://www.google.co.ao/webhp*",
    "http://www.google.com.ar/webhp*", "https://www.google.com.ar/webhp*",
    "http://www.google.as/webhp*", "https://www.google.as/webhp*",
    "http://www.google.at/webhp*", "https://www.google.at/webhp*",

Мне нужно сопоставить URL-адреса, которые запускают мой сценарий для https://www.google.com/ (точно), https://www.google.com/webph* (альтернатива для главной страницы Google) и https://www.google.com/search* (чтобы соответствовать вкладкам поиска, которые я хочу: изображения, видео, покупки и т. д.)

Основная проблема заключается в том, что я не могу использовать подстановочный знак для расширения домена (.com / .de / .org).

Должен быть лучший способ, верно? Мой текущий манифест выглядит как катастрофа.

1 Ответ

0 голосов
/ 08 января 2019

Я думаю, что вам всегда нужно будет где-то указывать свои спецификации URL, однако есть возможность сделать так, чтобы он соответствовал более широкому подходу, переместив его в JavaScript, и это даст вам возможность убрать его из манифеста, если вы желание.

В вашем манифесте просто объявите расширение для вставки фонового скрипта во все URL:

"content_scripts": [{
   "matches": ["http://*/*", "https://*/*"]
}]

А затем в фоновом скрипте укажите, где должно работать расширение, например:

var match = 'www.google.';
var excludes = ['maps', 'whatever'];    

chrome.tabs.onUpdated.addListener(function(id, info, tab) {
    if (tab.status !== "complete"){
        return;
    } 
    if(tab.url.indexOf(match) !== -1 && excludes.indexOf(tab.url) === -1){
        // inject your script
        chrome.tabs.executeScript(tab.id, {"file": "myScript.js"});
    }
}
...