Как сопоставить один и тот же домен с несколькими расширениями в расширении Chrome? - PullRequest
0 голосов
/ 28 августа 2018

Итак, я работаю над расширением Chrome, которое необходимо активировать на любом сайте с доменом example.extension, где extension может быть любым (.com, .de и т. Д.).

У меня есть скрипт контента, и в manifest.json я включил все доменные имена, перечисленные один за другим:

"content_scripts": [{
    "js": ["content.js"],
    "matches": ["https://www.example.com/*","https://www.example.de/*"]
  }]

Но как я мог написать что-то, что соответствует example.*, вместо того, чтобы перечислять их все? Обратите внимание, что я пробовал что-то подобное, и оно не работает:

 "content_scripts": [{
    "js": ["content.js"],
    "matches": ["https://www.example*"]
  }]

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Это 2 варианта:

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

    "content_scripts": [{
           "js": ["content.js"],
            "matches": [ "*://*/*" ],
            "include_globs": [
                "*://*.example.*/*",
            ]
        }]

2-й вариант: Вы можете изменить скрипт содержимого, чтобы проверить, соответствует ли цель URL www.example.*:

if (window.location.host.startsWith('www.example')){
   //content script code
}
0 голосов
/ 28 августа 2018

Вы можете использовать постоянный фоновый скрипт и вставлять скрипт, когда URL соответствует вашему требованию. Например:

background.js

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (changeInfo.status == 'complete' && tab.url.indexOf('https://www.example.') == 0){
        chrome.tabs.executeScript(tabId,{file:'content.js'});
    }
});
...