簡體   English   中英

刷新chrome擴展的圖標更改

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM