gpt4 book ai didi

javascript - 如何确定网页中 JavaScript 中安装脚本的 firefox 扩展版本?

转载 作者:行者123 更新时间:2023-11-30 00:28:53 29 4
gpt4 key购买 nike

我希望能够在用户登录我的网络应用程序时询问他们是否要安装我的 firefox 扩展程序,以防他们尚未安装它,或者他们的版本是否不是最新的。有没有可能做到这一点?

我无法通过网络搜索收集到有关此事的有用信息。我目前的尝试是这样的:

$(function() {
if ("InstallTrigger" in window) {
var params = {
"Example": {
URL: "https://www.example.com/plugins/firefox/latest/example.xpi",
IconURL: "https://www.example.com/favicon.ico",
Hash: "sha1:37441290FFDD33AB0280BECD79E1EF",
toString: function () { return this.URL; }
}
};

alert(InstallTrigger.compareVersion("Example", "0.8"));

InstallTrigger.install(params);
}
});

使用 InstallTrigger.install() 的安装有效。但是在 Firefox 38 中调用 InstallTrigger.compareVersion() 会导致错误“TypeError: InstallTrigger.compareVersion is not a function”。InstallTrigger.getVersion() 也是如此。

compareVersion() 记录在此处:http://www.applied-imagination.com/aidocs/xul/xultu/elemref/ref_InstallTrigger.html .但我也发现 compareVersion() 与 firefox 扩展无关的讨论,所以我很困惑。

当安装的扩展版本不是当前版本时,怎么可能只调用 InstallTrigger.install()?

最佳答案

我现在找到了合适的解决方案。 InstallTrigger.compareVersion() 和 InstallTrigger.getVersion() 似乎不再是 InstallTrigger API 的一部分,而且似乎也没有其他方法可以直接检索有关网页内已安装的 firefox 插件的信息。

诀窍在于,扩展程序可以通过操作 DOM 将信息插入到页面中,从而自行提供此信息。这里是一个使用 firefox SDK 的示例,它向主体添加了一个 CSS 类。

var pageMod = require("sdk/page-mod");
var contentScriptValue =
'document.body.className += " ExampleComFirefoxExtensionInstalledClass";';
pageMod.PageMod({
include: "*www.example.com*",
contentScript: contentScriptValue
});

然后页面可以检查插入的信息。

$(function() {
window.setTimeout(function() {
if ("InstallTrigger" in window &&
!$('body').hasClass('ExampleComFirefoxExtensionInstalledClass'))) {
var params = {
"Example": {
URL: "https://www.example.com/plugins/firefox/latest/example.xpi",
IconURL: "https://www.example.com/favicon.ico",
Hash: "sha1:37441290FFDD33AB0280BECD79E1EF",
toString: function () { return this.URL; }
}
};

InstallTrigger.install(params);
}
}, 500);
});

需要超时,因为插件在页面完全加载后操作 DOM。

相应地,该插件也可以将其版本号插入到网页中,以便能够直接安装较新的版本。

关于javascript - 如何确定网页中 JavaScript 中安装脚本的 firefox 扩展版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30341804/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com