Firefox附加组件sdk侧栏不兼容 - 如何警告用户?

时间:2014-03-10 19:41:15

标签: javascript firefox sdk firefox-addon firefox-addon-sdk

我已经使用附加组件sdk创建了一个加载项。我的插件使用ui / sidebar模块。如果用户使用旧版本的Firefox(例如Firefox ESR 24.1.1)安装我的附加组件,浏览器将通知用户已成功安装该附加组件。但是,附加组件实际上会产生以下错误(在浏览器控制台中可见):

Error: Module `sdk/ui/sidebar` is not found at resource://gre/modules/commonjs/sdk/ui/sidebar.js
resource://gre/modules/commonjs/sdk/loader/cuddlefish.js 133

这是有道理的,因为我已经读到侧边栏模块是在版本26中引入的。我的理解是,尽管存在这样的加载项,但由于浏览器的“默认兼容”功能。

但是,我发现这种行为对我的插件非常不利。在不知道查看控制台的情况下,用户将不知道安装失败。告知用户有关加载项不兼容性的最佳做法是什么?有没有办法强制执行minVersion?我应该在sidebar require语句周围设置一个try块,并尝试向用户发出某种警告,通知他们不兼容吗?

有没有一种标准方法可以解决这个问题?任何建议都会很棒。感谢。

更新 minVersion一直设定为21.0。

MDN上的

This page让我认为最新版本的SDK与当前版本的Firefox(当时为27)相对应。但是,看起来SDK的新版本还没有在相当长的一段时间内发布。我在1.15版本(我从this page下载)。由于1.15之前发布,当时当前版本的Firefox为21.0,因此minVersion设置为21.0。我没有在发布之前检查它,所以我觉得当minVersion为27时,Firefox 24上安装了加载项。

1 个答案:

答案 0 :(得分:1)

当您向AMO上传附加组件时,您必须告诉您的附加组件之一是与Firefox(或SeaMonkey或Fenec)的兼容性:

enter image description here

除此之外,你可以编辑你的addon.xpi中的install.rdf文件(注意它是一个zip文件),如下所示:

<!-- Firefox -->
<em:targetApplication>
  <Description>
    <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
    <em:minVersion>21.0</em:minVersion>
    <em:maxVersion>25.0a1</em:maxVersion>
  </Description>
</em:targetApplication>

当用户尝试安装插件(即.xpi文件)时,Firefox会检查这些行。

您必须做的是正确设置最小和最大版本,以避免不兼容的浏览器安装您的插件。