Javascript Firefox附加sdk侧栏不兼容-如何警告用户?
我已经用插件sdk创建了一个插件。我的插件使用ui/侧栏模块。如果用户使用旧版本的Firefox(如Firefox ESR 24.1.1)安装我的加载项,浏览器将通知用户加载项已成功安装。但是,该插件实际上会产生以下错误(在浏览器控制台中可见): 这是有道理的,因为我已经读到边栏模块是在版本26中引入的。我的理解是,尽管如此,由于浏览器的“默认兼容”功能,插件还是会安装 然而,我发现这种行为对于我的插件来说是非常不受欢迎的。如果不知道如何查看控制台,用户将不知道安装失败。告知用户插件不兼容的最佳实践是什么?有没有办法强制执行minVersion?我是否应该在侧边栏require语句周围放置一个try块,并尝试向用户发出某种警告,告知他们不兼容 有没有标准的方法来解决这个问题?任何建议都很好。谢谢 更新: minVersion一直被设置为21.0Javascript Firefox附加sdk侧栏不兼容-如何警告用户?,javascript,firefox,sdk,firefox-addon,firefox-addon-sdk,Javascript,Firefox,Sdk,Firefox Addon,Firefox Addon Sdk,我已经用插件sdk创建了一个插件。我的插件使用ui/侧栏模块。如果用户使用旧版本的Firefox(如Firefox ESR 24.1.1)安装我的加载项,浏览器将通知用户加载项已成功安装。但是,该插件实际上会产生以下错误(在浏览器控制台中可见): 这是有道理的,因为我已经读到边栏模块是在版本26中引入的。我的理解是,尽管如此,由于浏览器的“默认兼容”功能,插件还是会安装 然而,我发现这种行为对于我的插件来说是非常不受欢迎的。如果不知道如何查看控制台,用户将不知道安装失败。告知用户插件不兼容的最佳
在MDN上,我认为最新版本的SDK与当前版本的Firefox(当时为27)相对应。但是,看起来SDK的新版本已经有一段时间没有发布了。我使用的是1.15版(我从下载)。由于1.15不久前发布,当时Firefox的当前版本是21.0,因此minVersion被设置为21.0。在发布之前,我没有检查它,因此我的印象是,当minVersion为27时,该加载项安装在Firefox 24上。当您将加载项上载到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>
{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
21
25.0a1
当您作为用户尝试安装插件(即,.xpi文件)时,Firefox将检查这些行
您必须正确设置最小和最大版本,以避免不兼容的浏览器安装您的加载项。matagus是正确的。关于被接受的版本号列表,请看这里:啊,我现在觉得自己很傻。我实际上没有在install.rdf文件中检查minVersion,因为MDN上说“minVersion设置为当前发布的Firefox”。因此,我假设Firefox忽略了minVersion。但是,它被设置为21.0,因此我的问题。谢谢你的提示。@p不客气。如果我的答案有用,请投票表决并将其标记为有效:这样我们可以继续构建stackoverflow内容。@matagus我通过解压xpi、更改文件,然后重新压缩来修改install.rdf中的minVersion。但是,我现在在安装后遇到一个错误。Firefox表示加载项已成功安装,但浏览器控制台中出现以下错误。
“打开输入流时出错(无效文件名?)”runner.js:162\n“打开输入流时出错(无效文件名?)”promise.js:133
知道原因吗?p、 我应该把这个问题作为一个新问题来回答吗?另外值得注意的是,我目前没有使用AMO,只是手动安装了.xpi
。
<!-- 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>