Обновление динамической кнопки расширения - требуется вдохновение
Я создаю расширение, где я хочу, чтобы добавление знака в кнопку расширения, когда расширение в коде было активировано. Я надеялся, что смогу добавить текст к кнопке расширения (вверху справа)
Вот простой сценарий. Пусть говорят, что мои расширения контролируют просмотр и получают URL-адрес вкладки, в моем расширении у меня есть список доменов для просмотра.
Следите за этими доменами
www.website1.com
www.website2.com
Если пользователь посещает домен в просмотренном списке, я хочу указать его каким-то образом, добавив некоторый текст где-нибудь - я надеялся в правом верхнем углу браузера, где находятся кнопки расширений. Я действительно не хочу использовать окно уведомлений, поскольку я хочу что-то ненавязчивое. Текст, который я хочу отобразить, будет всего лишь несколькими буквами, но разными для разных URL-адресов.
Есть ли у кого-нибудь вдохновение?
Спасибо
Ответы
Ответ 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 или около того появятся. Я зациклился на том, каким должно быть свойство объекта.