没有为Firefox调用扩展安装回调

时间:2017-08-02 15:41:07

标签: javascript callback firefox-addon

我实际上在网站上添加了一个按钮来安装网络扩展程序,我希望有一个回调告诉我它是否成功。

我来到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);

安装工作,我的问题是没有进入回调函数。

1 个答案:

答案 0 :(得分:1)

MDN documentation for InstallTrigger.install()州:

  

在Firefox 3中,除非执行安装的网站列入白名单,否则不再调用回调。

考虑到措辞,这意味着在Firefox版本> = 3中,除非启动安装的网站列入白名单,否则永远不会调用回调函数。您的网站极不可能列入白名单,因此不会调用回调函数。除了请求Mozilla将您的网站列入白名单之外(我认为这可能非常),您无法通过调用InstallTrigger.install()来执行回调。

假设您已控制扩展程序的代码,则替代方案是扩展程序通知网站已安装该程序。如何执行此操作取决于您要安装的扩展类型。据推测,它将是一个WebExtension。如果是这样,有几种方法:window.postMessage()CustomEvent,或者让扩展执行已存在的函数/在页面上下文中设置变量。