Firefox 不调用扩展安装回调
Extension install callback not called for Firefox
我实际上是在网站上添加一个按钮来安装网络扩展,我希望有一个回调告诉我它是否成功。
我偶然发现 documentation 展示了这段代码:
function xpinstallCallback(url, status)
{
if (status == 0)
msg = "XPInstall Test: PASSED\n";
else
msg = "XPInstall Test: FAILED\n";
dump(msg);
alert(msg);
}
xpi={'XPInstall Pre-Checkin Test':'pre_checkin.xpi'};
InstallTrigger.install(xpi,xpinstallCallback);
所以我使用这个模型和我在网上收集的一些信息构建了我的代码,这是我的代码:
$("#install-firefox").on('click', '.install-firefox-extension', function() {
var params = {
"Extension": { URL: "https://addons.mozilla.org/firefox/downloads/latest/example/example.xpi",
IconURL: 'https://addons.cdn.mozilla.net/user-media/addon_icons/example/example.png',
Hash: "sha256:30097adeeadcf2683e9a4aexampleaa82403aafb7faa6db9f44db657a786a4",
toString: "https://addons.mozilla.org/firefox/downloads/latest/example/example.xpi"
}
};
InstallTrigger.install(params, function(url, status) {
if (status == 0)
console.log("Extension successfully installed");
else
console.log("Extension failed");
});
});
安装成功,我这里的问题是没有进入回调函数。
MDN documentation for InstallTrigger.install()
状态:
In Firefox 3 the callback is no longer invoked unless the website performing the installation is whitelisted.
鉴于措辞,这意味着在 Firefox 版本 >= 3 中永远不会调用回调函数,除非启动安装的网站被列入白名单。您的网站被列入白名单的可能性很小,因此不会调用回调函数。除了请求 Mozilla 将您的网站列入白名单(我认为这 非常 不太可能),您无法仅通过调用 InstallTrigger.install()
来执行回调.
假设您可以控制扩展程序的代码,另一种方法是让扩展程序通知网站它已安装。如何执行此操作取决于您正在安装的扩展类型。据推测,它将是一个 WebExtension。如果是这样,有几种方法:window.postMessage()
、CustomEvent,或者让扩展执行页面上下文中已经存在的 function/set 变量。
我实际上是在网站上添加一个按钮来安装网络扩展,我希望有一个回调告诉我它是否成功。
我偶然发现 documentation 展示了这段代码:
function xpinstallCallback(url, status)
{
if (status == 0)
msg = "XPInstall Test: PASSED\n";
else
msg = "XPInstall Test: FAILED\n";
dump(msg);
alert(msg);
}
xpi={'XPInstall Pre-Checkin Test':'pre_checkin.xpi'};
InstallTrigger.install(xpi,xpinstallCallback);
所以我使用这个模型和我在网上收集的一些信息构建了我的代码,这是我的代码:
$("#install-firefox").on('click', '.install-firefox-extension', function() {
var params = {
"Extension": { URL: "https://addons.mozilla.org/firefox/downloads/latest/example/example.xpi",
IconURL: 'https://addons.cdn.mozilla.net/user-media/addon_icons/example/example.png',
Hash: "sha256:30097adeeadcf2683e9a4aexampleaa82403aafb7faa6db9f44db657a786a4",
toString: "https://addons.mozilla.org/firefox/downloads/latest/example/example.xpi"
}
};
InstallTrigger.install(params, function(url, status) {
if (status == 0)
console.log("Extension successfully installed");
else
console.log("Extension failed");
});
});
安装成功,我这里的问题是没有进入回调函数。
MDN documentation for InstallTrigger.install()
状态:
In Firefox 3 the callback is no longer invoked unless the website performing the installation is whitelisted.
鉴于措辞,这意味着在 Firefox 版本 >= 3 中永远不会调用回调函数,除非启动安装的网站被列入白名单。您的网站被列入白名单的可能性很小,因此不会调用回调函数。除了请求 Mozilla 将您的网站列入白名单(我认为这 非常 不太可能),您无法仅通过调用 InstallTrigger.install()
来执行回调.
假设您可以控制扩展程序的代码,另一种方法是让扩展程序通知网站它已安装。如何执行此操作取决于您正在安装的扩展类型。据推测,它将是一个 WebExtension。如果是这样,有几种方法:window.postMessage()
、CustomEvent,或者让扩展执行页面上下文中已经存在的 function/set 变量。