Изменить значок и данные надстройки браузера в соответствии с активной вкладкой

В настоящее время у меня есть надстройка crossrider, состоящая из extension.js и background.js.

В extension.js я отправляю запрос GET на страницу, на которой в данный момент находится пользователь. В этом запросе GET я собираю некоторые данные.

Я храню доменное имя (протокол + домен) в локальной базе данных Crossrider, и для каждого запроса на получение я удостоверяюсь, что запрашиваемый домен отсутствует в базе данных, и если он найден в базе данных, я предотвращение выполнения запроса (в целях оптимизации).

Теперь проблема в том, что я хочу, чтобы каждый раз, когда пользователь меняет свою вкладку, значок надстройки браузера и данные, представленные пользователю (например, метка значка browserAction), изменялись соответственно домену. они в настоящее время включены на этой вкладке.

Например:

Вкладка 1 – https://www.google.com Вкладка 2 – https://www.yahoo.com

Когда пользователь находится на вкладке 1, значок надстройки браузера и сведения меняются соответственно этому URL-адресу. Как только он/она переключается на вкладку 2, детали снова меняются в соответствии с URL-адресом, на котором они находятся. Если пользователь посещает новый веб-сайт на той же вкладке, сведения о надстройке браузера снова должны соответствовать новому URL-адресу, который он посетил.

Большое спасибо


person user1921350    schedule 03.03.2014    source источник


Ответы (1)


Мое понимание ваших требований, как вы их хорошо описали, состоит из 2 компонентов, которые можно решить в фоновом режиме, используя следующие методы Crossrider:

  1. Чтобы обнаружить изменения вкладок, используйте appAPI.tabs.onTabSelectionChanged.
  2. Для отслеживания изменений URL используйте appAPI.webRequest.onBeforeNavigate.

Чтобы упростить код, я бы использовал общую функцию для обновления кнопок. Так, например, в файле background.js ваш код будет выглядеть так:

appAPI.ready(function($) {
    // Monitor tab selection changes
    appAPI.tabs.onTabSelectionChanged(function(tabInfo) {
        // tabInfo.Id = Tab Id
        // tabInfo.tabUrl = URL in tab
        updateButton(tabInfo.tabUrl);
    });

    appAPI.webRequest.onBeforeNavigate.addListener(function(details, opaqueData) {
        // details.pageUrl = URL of the tab requesting the page
        // opaqueData = data passed to the context of the callback function
        updateButton(details.pageUrl);
    });

    function updateButton(url) {
        // Your code to update the button based on URL
    }
});

[Раскрытие информации: я сотрудник Crossrider]

person Shlomo    schedule 03.03.2014