[英]Refreshing an icon change for chrome extension
我正在開發一個Google Chrome擴展程序,根據您的IP本地化更改其圖標。 我在擴展圖標更改后面臨刷新問題。
由於我的background.js
文件中的這個命令,圖標實際上正在改變。
chrome.browserAction.setIcon ( { path: 'france.png' } );
不幸的是, setIcon
命令似乎是異步的。 圖標更改實際上在代碼更改后幾秒鍾出現。 有沒有辦法強制chrome刷新圖標?
許多Chrome擴展程序似乎能夠控制它,但我無法找到他們如何管理它。
這里有更多細節:
為了更清楚地理解,我從不同的文件中刪除了我的所有javascript
代碼,但setIcon
行除外。 這是Manifest行聲明我的javascript
文件。
"background": { "scripts": [ "jquery.min.js", "popup.js", "background.js"] },
popup.js
:現在為空background.js
:只有這兩行:
console.log ("I'm background script");
chrome.browserAction.setIcon({path: 'france.png'});
在使用擴展管理器重新加載擴展后,我點擊它的圖標。 Chrome會顯示靜態html
彈出窗口並加載background.js
文件。 作為證明,文本立即出現在控制台窗口中。
但是我必須在圖標擴展上再多幾次才能看到它被chrome改變了。
我應該在某處做錯事,但實際上,當我刪除所有內容時,我不知道這種延遲可能來自哪里。
要立即更新圖標句柄,請在后台腳本中處理所有相關的webNavigation事件:
chrome.webNavigation.onCommitted.addListener(updateIcon);
chrome.webNavigation.onHistoryStateUpdated.addListener(updateIcon);
chrome.webNavigation.onBeforeNavigate.addListener(updateIcon);
function updateIcon(details) {
if (details.frameId != 0) {
return; // only update the icon for main page, not iframe/frame
}
chrome.browserAction.setIcon({
path: {19: "france-19.png", 38: "france-38.png"},
tabId: details.tabId
});
}
您的manifest.json當然應該具有webNavigation
權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.