В этом минимальном примере у меня есть следующий манифест. json:
{
"name": "Getting Started Example",
"version": "1.0",
"description": "Build an Extension!",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
},
"permissions": ["webNavigation", "activeTab"],
"browser_action": {
"default_icon": {
"16": "red.png"
}
}
}
На каждой навигации я хочу изменить значок на панели инструментов на зеленый png , Работает, однако, есть проблема:
- Я на любой странице, значок зеленый.
- Я нажимаю на ссылку, она запускает навигацию.
- Значок сбрасывается на красный в течение нескольких миллисекунд
- Мои слушатели срабатывают, и они устанавливают значок обратно зеленый.
Мой фон. js:
const setIcon = (details) => {
if (details.frameId != 0) {
return; // only update the icon for main page, not iframe/frame
}
chrome.browserAction.setIcon({
path: { '16' : 'green.png'},
tabId: details.tabId
});
}
chrome.webNavigation.onHistoryStateUpdated.addListener(setIcon);
chrome.webNavigation.onBeforeNavigate.addListener(setIcon);
chrome.webNavigation.onCommitted.addListener(setIcon);
Что вызывает такое поведение? Есть ли способ предотвратить сброс иконки при навигации?