A O*_*A O 0 javascript google-chrome local-storage google-chrome-extension
所以我有一个信息按钮,每当用户更新扩展时,右上方会显示一个小红点,表示有一个警报(新的更新).


我现在是这样做的,只要在查看更新时在localStorage中设置一行 - 如果找不到该行,则该按钮将具有红点.
问题是,这个解决方案要求我在每次更新后,每次启动更新时都会改变几行,如下所示:
//1.1.2 was the last version
localStorage.removeItem("update-1.1.2");
...
if( localStorage.getItem("update-1.1.3") === null ) {
//show button image with red dot
}
else {
//show button image without red dot
}
...
$('#info').click(function()
{
localStorage.setItem("update-1.1.3", "YES");
//swap the button image w/ red dot, with the same image w/o the red dot
});
Run Code Online (Sandbox Code Playgroud)
如您所见,每次更新时我都必须在3个位置更改"update-xxx"字符串.
所以我的两个问题是: - 有更好的方法吗?也许是一种确定用户是否更新了扩展程序的方法? - 图像交换是解决此问题的最佳方式吗?或者我应该有一个红点图像,使它出现和消失.对我来说,性能差异似乎很小 - 它取决于是否交换整个图像,或者使隐藏/不隐藏另一个图像更有效.
chrome.runtimeAPI提供的两件可以帮助您的事情:
您可以检测更新后第一次运行扩展程序:
chrome.runtime.onInstalled.addListener( function(details) {
switch(details.reason) {
case "install":
// First installation
break;
case "update":
// First run after an update
break;
}
});
Run Code Online (Sandbox Code Playgroud)您可以从清单中提取它,而不是对版本号进行硬编码:
chrome.runtime.getManifest().version
Run Code Online (Sandbox Code Playgroud)也就是说,我认为当你有话要对用户说时,更新代码中的一些常量是完全合理的.
至于红点,您可以尝试使用动态构造的图标,通过在调用时使用<canvas>和imageData属性setIcon.或者,为简单起见,请使用徽章setBadgeText.