2014-11-06 4 views
0

Я видел плагины, подобные Adblocks, которые могут переключать иконку плагина в оттенки серого почти с немедленным действием изменения вкладок.Как сменить значок Chrome Extension?

Как это достичь? В настоящее время я делаю это с обнаружением определенного URL-адреса с content.js, а затем отправляю сообщение в background.js для изменения значка. Но это происходит медленно и происходит через 2-3 секунды после загрузки страницы.

Как это сделать? У меня есть определенный список подстановочных знаков URL, по которым нужно изменить значок.

ответ

0

Ваш скрипт содержание работает, по умолчанию, в "document_idle", что означает «некоторое время после того, как документ полностью загружен и JS двигателя на холостом ходу»

Если ваш «детектор сценарий» не нужен доступ к DOM, чтобы принять решение о значок, вы можете установить его to run at "document_start", перед загрузкой DOM:

"content_scripts": [ 
    { 
    "matches": ["*://*.example.com/*"], 
    "js": ["detect_url.js"], 
    "run_at": "document_start" 
    } 
], 

См Content Script docs для более подробной информации.

С другой стороны, если у вас есть "tabs" разрешения, вы можете прослушать соответствующие вкладки событий (onCreated, onUpdated, onReplaced).

3

API-интерфейсы chrome.pageAction и chrome.browserAction позволяют расширениям указывать состояние табуляции (подсказка кнопки, значок, всплывающее окно и т. Д.).

API-интерфейсы chrome.webNavigation для обнаружения навигационных систем или API chrome.tabs для обнаружения изменений состояния вкладок. Свяжите слушатель событий либо API и обновления состояния значка в функции обратного вызова: (. Читать the documentation, чтобы увидеть то, что доступно в details объекта)

chrome.webNavigation.onCommitted.addListener(function(details) { 
    chrome.browserAction.setBadgeText({ 
     text: 'whatever', 
     tabId: details.tabId // Important for tab-specific state! 
    }); 
}); 

+1

И скоро будет 'chrome.declarativeContent.SetIcon '.. – Xan

Смежные вопросы