如何知道用户最近是否更新了Chrome扩展程序,以便我可以提醒他们

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"字符串.

所以我的两个问题是: - 有更好的方法吗?也许是一种确定用户是否更新了扩展程序的方法? - 图像交换是解决此问题的最佳方式吗?或者我应该有一个红点图像,使它出现和消失.对我来说,性能差异似乎很小 - 它取决于是否交换整个图像,或者使隐藏/不隐藏另一个图像更有效.

Xan*_*Xan 5

chrome.runtimeAPI提供的两件可以帮助您的事情:

  1. 您可以检测更新后第一次运行扩展程序:

    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)
  2. 您可以从清单中提取它,而不是对版本号进行硬编码:

    chrome.runtime.getManifest().version
    
    Run Code Online (Sandbox Code Playgroud)

也就是说,我认为当你有话要对用户说时,更新代码中的一些常量是完全合理的.

至于红点,您可以尝试使用动态构造的图标,通过在调用时使用<canvas>imageData属性setIcon.或者,为简单起见,请使用徽章setBadgeText.