gpt4 book ai didi

javascript - 刷新 chrome 扩展的图标更改

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:45 24 4
gpt4 key购买 nike

我正在开发一个 Google Chrome 扩展程序,它会根据您的 IP 本地化更改其图标。扩展图标更改后,我遇到刷新问题。

由于我的 background.js 文件中的这个命令,图标实际上发生了变化。

chrome.browserAction.setIcon ( { path: 'france.png' } );

不幸的是,setIcon 命令似乎是异步的。图标更改实际上是在代码更改后几秒钟出现的。有没有办法强制 chrome 刷新图标?

许多 chrome 扩展程序似乎能够控制它,但我无法找到它们是如何管理的。


这里有更多的细节:

为了更清楚地理解,我从不同的文件中删除了所有 javascript 代码,setIcon 行除外。这是声明我的 javascript 文件的 list 行。

"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 权限。

关于javascript - 刷新 chrome 扩展的图标更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26759279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com