Chrome расширение, как исключить chrome: // URI в манифесте. json - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь запретить пользователям запускать мое расширение на chrome:// страницах. Когда они нажимают на мое расширение, они получают ошибку, которая появляется рядом с моим расширением и действительно раздражает:

picture of error

Что я пробовал

Вот мой manifest.json. Я хотел бы полностью игнорировать chrome:// URI.

    "content_scripts": [
        {
            "matches": ["http://*/*", "https://*/*"],
            "exclude_globs": ["chrome://*"],
            "css": ["style.css"]
        }
    ],
    "background": {
        "persistent": false,
        "scripts": ["background.js"],
        "css": ["style.css"]
    }

Вот мой background.js:

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null, {file: "a.js"}, function(){
        chrome.tabs.executeScript(null, {file: "b.js"});
    });
});

Я действительно просто хотел бы сопоставить все http и https urls и игнорируйте все остальное, как я и думал "matches": ["http://*/*", "https://*/*"], будет делать здесь, но по какой-то причине это не работает.

Я пытался использовать исключения, но результат тот же. Я попытался использовать "*://*/*" в качестве шаблона совпадений, но это также не работает, хотя документы для шаблонов совпадений говорят, что использование * для схемы должно совпадать только с http/https. Так что у меня нет идей.

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

1 Ответ

0 голосов
/ 11 февраля 2020

Мне удалось предотвратить эту ошибку, проверив URL-адрес вкладки внутри прослушивателя событий в моем файле background.js:

chrome.browserAction.onClicked.addListener(function(tab) {
    if(!tab.url || !tab.url.startsWith('http')){
        return;
    }

    // do stuff
});

Надеюсь, это кому-нибудь поможет!

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