我已经使用附加组件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上安装了加载项。
答案 0 :(得分:1)
当您向AMO上传附加组件时,您必须告诉您的附加组件之一是与Firefox(或SeaMonkey或Fenec)的兼容性:
除此之外,你可以编辑你的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会检查这些行。
您必须做的是正确设置最小和最大版本,以避免不兼容的浏览器安装您的插件。