Автоматическая смена иконки расширения после перехода на сайт - PullRequest
0 голосов
/ 05 мая 2018

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

manifest.json

{
  "manifest_version": 2, 
  "name" : "__MSG_extName__",
  "default_locale" : "en",
  "version": "1.0",

  "permissions": [
    "tabs"
  ],  
  "browser_action": {
    "default_icon": "images/icon.png",
    "default_popup": "index.html"
  }
} 

script.js

chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT},
   function(tabs){ 
      var url = tabs[0].url;
      if (url.indexOf('mywebsite.com') !== -1){
           chrome.browserAction.setIcon({path:"images/ok.png"});
      }else{
          chrome.browserAction.setIcon({path:"images/no.png"});
      }
   }
);

1 Ответ

0 голосов
/ 05 мая 2018

Если вы хотите получать уведомления об изменении местоположения страницы, вам следует прослушать событие chrome.tabs.onUpdated. См. Официальную документацию для получения подробной информации, но идея заключается в том, чтобы прослушать это событие, и при срабатывании проверить, является ли вкладка той, которая вам интересна (например, активная вкладка), и посмотреть если измененное значение является URL-адресом, и если да, сравните его с mywebsite.com. Ваш код сейчас проверяется только один раз, когда вы запускаете запрос.

Ваш код может выглядеть примерно так:

chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
   const newUrl = changeInfo.url;
   if (newUrl) {
       if (newUrl.indexOf('mywebsite.com') !== -1){
           chrome.browserAction.setIcon({path:"images/ok.png"});
       }else{
           chrome.browserAction.setIcon({path:"images/no.png"});
       }
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...