Firefox WebExtension通知 - 按钮未显示

时间:2016-03-16 20:38:17

标签: firefox notifications firefox-addon firefox-webextensions

我正在开发一个Firefox WebExtension,我试图用按钮显示通知。我在Chrome中使用它。根据{{​​3}},Firefox支持此功能。按钮在docs中列为可选。

chrome.notifications.create(notificaitonId, {
        type: "basic",
        iconUrl: chrome.extension.getURL("images/unknown.svg"),
       title: "Blah",
       message: "A Message",
       buttons: [{title: "Get More Details"}]
});

当我运行此代码时,我会看到通知。但是,我没有看到按钮。我错过了什么吗?它实际上不受支持吗?唯一的NotificationOptions不使用按钮,因此没有帮助。

1 个答案:

答案 0 :(得分:3)

不幸的是,截至2016-03-18,按钮不适用于WebExtension通知。

NotificationOptions documentation on MDN州[强调/格式化我的]:

  

前四个属性 - typeiconUrltitlemessage - 是   notifications.create()中必填,并且可选   notifications.update() Firefox目前仅支持这些   四个属性

Browser compatibility section

  

Firefox仅支持:typeiconUrltitlemessage

这一点的重要部分(“Firefox目前仅支持这四个属性”,Firefox仅支持:typeiconUrltitlemessage。){ {3}}。因此,如果您在该日期之前查看了文档,则表明buttons尚未实现。

此外,added to the documentation on 2016-03-07有评论:

  

// FIXME:仍然不支持很多选项,特别是
  //按钮。

您还可以在浏览器中找到当前用于此目的的源代码:chrome://extensions/content/ext-notifications.js

解决方案:自己实施buttons

在WebExtensions中:
可能可以在WebExtensions中自己实现按钮。但是,我对WebExtensions不够熟悉,无论是否有可能。如果是这样,您可能需要查看为其他类型的Firefox加载项实现通知和通知按钮的source code

对于Firefox,一般来说:
如果这是我需要的东西,我可能会选择继续实施buttons以及我需要的任何其他选项,对于整个Firefox并将代码提交给Mozilla进行审核并包含在Firefox中。我知道这可能听起来像是一个大问题和后方的痛苦,但它确实不应该那么困难。

如果您确实希望对其进行操作,则不应采取任何特殊设置。实现WebExtensions通知的JavaScript代码是 ext-notifications.js 文件,该文件包含在 omni中的 chrome \ toolkit \ content \ extensions 目录中。 ja 文件(只是.zip文件,扩展名更改为.ja),该文件位于Firefox安装目录中。请注意,安装目录层次结构中实际上有3个不同的 omni.ja 文件。您想要的是安装层次结构的根目录,而不是浏览器 webapprt 子目录中的那些。

使用它就像提取该文件,修改它,制作更新的 omni.ja 文件并将更新后的 omni.ja 文件放入发行版一样简单目录。有一段时间,我每次发布Firefox时都会这样做,因为我想要一个更长的书签MRU文件列表。我最终崩溃了,只是做了一个覆盖扩展source code,以替换我正在进行更改的文件。如果需要,您可以执行相同的操作来实现支持按钮所需的更改。当然,这会导致您当前的扩展依赖于正在安装的另一个扩展,直到代码集成到Firefox中。但是,这将导致您现在拥有您希望开发的功能,以及进入Firefox的功能至少比等待Mozilla的其他人实现它更快。像这样的覆盖扩展只需要一个Change Bookmark Recent Folder List Length文件,一个双行install.rdf文件和更新的 ext-notifications.js 文件,您希望覆盖/替换当前文件之一。