我实际上在网站上添加了一个按钮来安装网络扩展程序,我希望有一个回调告诉我它是否成功。
我来到documentation,显示了这样的代码:
getAsString
所以我使用这个模型构建了我的代码,并在网络上收集了一些信息,这是我的代码:
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);
安装工作,我的问题是没有进入回调函数。
答案 0 :(得分:1)
MDN documentation for InstallTrigger.install()
州:
在Firefox 3中,除非执行安装的网站列入白名单,否则不再调用回调。
考虑到措辞,这意味着在Firefox版本> = 3中,除非启动安装的网站列入白名单,否则永远不会调用回调函数。您的网站极不可能列入白名单,因此不会调用回调函数。除了请求Mozilla将您的网站列入白名单之外(我认为这可能非常),您无法通过调用InstallTrigger.install()
来执行回调。
假设您已控制扩展程序的代码,则替代方案是扩展程序通知网站已安装该程序。如何执行此操作取决于您要安装的扩展类型。据推测,它将是一个WebExtension。如果是这样,有几种方法:window.postMessage()
,CustomEvent,或者让扩展执行已存在的函数/在页面上下文中设置变量。