Подтвердить что ты не робот

Обновление динамической кнопки расширения - требуется вдохновение

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

Вот простой сценарий. Пусть говорят, что мои расширения контролируют просмотр и получают URL-адрес вкладки, в моем расширении у меня есть список доменов для просмотра.

Следите за этими доменами www.website1.com www.website2.com

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

Есть ли у кого-нибудь вдохновение?

Спасибо

4b9b3361

Ответ 1

Вы можете изменить значок расширения следующим образом:

chrome.browserAction.setIcon({path: icon});

Существует также значок "значок" - маленький ящик над значком расширения, который показывает, что. количество непрочитанных сообщений в расширении gmail. Вы можете манипулировать им следующим образом:

chrome.browserAction.setBadgeBackgroundColor({color:[190, 190, 190, 230]});
chrome.browserAction.setBadgeText({text:"?"});

Также можно динамически генерировать значок на элементе холста, а затем отображать его следующим образом:

chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0, canvas.width,canvas.height)});

Ответ 2

Вы также можете установить тайм-аут для проверки изменений в системе каждые x минут, а затем обновления значка.

В моем расширении у меня есть счетчик задач, вызванный внутри функции уведомления. Что-то вроде:

$.getJSON(
    "http://mydomain/notifications?ajax=1&callback=?",
    function(data){
        var result = data.retorno;
        if(result.length > 0){
            var totalItens = result[0].total
        } else {
            var totalItens = 0;
        }
        chrome.browserAction.setIcon({path: '19.png'});
        chrome.browserAction.setBadgeText({text:''+totalItens+''});

        for(var i=0; i<result.length; i++){

          var imagem = 'http://mydomain/myimage';
          var titulo = 'mytitle';
          var desciption = 'mydescription';

          var urlNot = 'http://mydomain/mypageOnclick';

          var not = new Notifier(urlNot);
          not.Notify(
              imagem,     // The image.
              titulo,     // The title.
              desciption  // The body.
          );

        }

    }
);

Ответ 3

tl; dr: вызвать его из background.js

Я гуглил этот комментарий, потому что пытался вызвать функцию chrome.browserActions из моего скрипта содержимого

Он доступен только для сценариев, которые выполняются как часть расширения Chrome, поскольку content_scripts - это то же самое, что и клиентские сценарии, к которым вам нужно обращаться через Chrome. * Api's

и чтобы исправить некоторые дополнительные головные боли у меня был вызов для текста setBadge должен выглядеть следующим образом:

chrome.browserAction.setBadgeText({text: 'ASDF'});

Вы можете поместить столько символов, сколько хотите, но только 4 или около того появятся. Я зациклился на том, каким должно быть свойство объекта.