Chrome和firefox不会长期支持NPAPI。我有什么选择?

Chrome和firefox不会长期支持NPAPI。我有什么选择?,firefox,firefox-addon,firefox-addon-sdk,npapi,browser-plugin,Firefox,Firefox Addon,Firefox Addon Sdk,Npapi,Browser Plugin,Chrome和Firefox已经宣布他们将很快放弃对NPAPI插件的支持 看 对于Chrome,如果想从JavaScript执行一些C++代码,我有两个选项,比如移动到本地客户端(NaCL)。 但是我在Firefox中有什么选择呢 基本上,我有一个使用Advon SDK构建的Firefox插件,我想从附加内容脚本(JavaScript)调用一些C++代码。我以前使用过NPAPI,但现在我想转向更长期的支持 谢谢。 < P>安装NAPPI插件只是为了“调用一些C++代码”实际上不是一件好事。NPA

Chrome和Firefox已经宣布他们将很快放弃对NPAPI插件的支持

对于Chrome,如果想从JavaScript执行一些C++代码,我有两个选项,比如移动到本地客户端(NaCL)。 但是我在Firefox中有什么选择呢

基本上,我有一个使用Advon SDK构建的Firefox插件,我想从附加内容脚本(JavaScript)调用一些C++代码。我以前使用过NPAPI,但现在我想转向更长期的支持


谢谢。

< P>安装NAPPI插件只是为了“调用一些C++代码”实际上不是一件好事。NPAPI插件将可用于所有网站,而不仅仅是您的插件。。。如果随机网站以您意想不到的方式访问这些内容,您是否确保它们不会损坏

无论如何,今天在Firefox中运行二进制代码有不同的机制:

  • 是最不痛苦的推荐方式。基本上,您将定义一个C API/ABI,可以将其导入Javascript并与之交互
  • XPCOM二进制组件。基本上,整个Firefox后端都是使用二进制XPCOM组件编写或粘合在一起的。也可以在附加组件中实现它们,尽管这是一个非常陡峭的学习曲线,文档分散在许多地方,而且非常“不完整”。另一个巨大的缺点是,您需要为每个新的Firefox版本重新编译和重新测试您的模块(js ctypes则不是这样)
  • 使用附加SDK将使问题进一步复杂化,但您应该已经习惯了,因为您现在正在使用NPAPI插件

    我建议您首先确定您的附加组件中是否真的需要二进制文件,或者JS实现(具有现代功能,例如类型化数组,甚至可以通过emscripten实现asm.JS)和HTML5(画布、音频/视频)是否也可以。如果不是,至少轻量级js ctypes可以


    此外,Firefox中的NPAPI插件目前还没有消失。目前它们将可用,但用户必须启用它们(单击播放)。现在,附加组件可能可以解决这个问题,根据需要启用它们。因此,没有必要匆忙行事。

    “js ctypes是最简单的推荐方式。基本上,你可以定义一个C API/ABI,你可以导入到Javascript中并与之交互。”据我所知,js ctypes只能从chrome代码中访问,因此我猜这不能在内容脚本中使用,或者可以吗?那么,对于我们需要进行的每一个本机调用,内容脚本和加载项脚本之间的通信,以及反之亦然(对于结果)之间的通信是唯一的方法吗?感谢您进一步澄清答案。是的,您的内容脚本需要请求特权脚本(
    main.js
    )调用js ctypes函数,并将结果传回Mozilla早就不推荐使用的.XPCOM二进制组件。js ctype是Mozilla平台上唯一的替代方案……据我所知,这篇文章在与Firefox相关的评论中遭到了质疑。他联系的消息来源根本没有这么说。这里有一篇谷歌博客文章说,NPAPI将从Mozilla中删除,但他链接的消息来源也没有这样说。我看不到Mozilla有这样的声明,如果有人看过,我会很感兴趣。