Как изменить Chrome Значок расширения только для активной вкладки с всплывающим окном? - PullRequest
0 голосов
/ 21 января 2020

Я делаю простое расширение chrome, которое может проверять HTML теги для текущей активной вкладки.

При нажатии на значок расширения отображается default popup page(popup.html)

It изменит значок расширения в зависимости от результатов и покажет результаты на всплывающей странице.

Я использую код chrome.browserAction.setIcon({path: imgSrc}), чтобы изменить значок расширения.

Но проблема в том, что этот значок расширения изменения кода на всех других вкладках.

Я хочу изменить его только на активной в данный момент вкладке, по которой щелкнул значок расширения.

Я знаю, что должен получить идентификатор текущей вкладки для изменить значок ext для текущей активной вкладки.

Для этого кода chrome.browserAction.setIcon({tabId: tab.id, path: imgSrc})

Но не знаю, как получить текущий идентификатор активной вкладки на popup.js, а не background.js

Может кто-нибудь мне помочь?

вот мои файлы

манифест. json, который объявляет default_popup

{
    "name": "Tag Checker for ChromeExtension",
    "version": "1.0.0",
    "description": "Tag Checker for ChromeExtension",
    "manifest_version": 2,
    "permissions": [
        "activeTab",
        "storage"
    ],
    "browser_action": {
        "default_icon": {
            "16": "images/browserAction/best.png",
            "32": "images/browserAction/normal.png",
            "48": "images/browserAction/bad.png",
            "128": "images/browserAction/abnormal.png"
        },
        "default_popup": "popup.html"
    }
}

всплывающее окно. html

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>Tag Checker</title>
    <script src="/js/popup.js"></script>
</head>
<body>
    <span id="results"></span>
</body>
</html>

всплывающее окно. js

chrome.tabs.executeScript({file: '/js/injection.js'});

впрыск. js

//checking tag codes will be implemented here

var imgSrc = 'images/browserAction/48.png';
chrome.browserAction.setIcon({path: imgSrc});

(function() {
  document.querySelector('#results').innerText = 'DONE';
})();

1 Ответ

1 голос
/ 21 января 2020

Сценарии содержимого не могут этого сделать.
Переместить две строки (imgSr c и setIcon) в всплывающее окно. js и указать tabId .

всплывающее окно. js:

chrome.tabs.query({active: true, currentWindow: true}, ([tab]) => {
  chrome.browserAction.setIcon({tabId: tab.id, path: 'images/browserAction/48.png'});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...