仅仅为了“调用一些 C++ 代码”而安装一个 NPAPI 插件实际上并不是一件好事。NPAPI 插件将可用于所有网站,而不仅仅是您的附加组件...您是否确保如果随机网站以您没想到的方式访问它,这些东西不会损坏?
无论如何,今天在 Firefox 中运行二进制代码有不同的机制:
- js-ctypes是最不痛苦和推荐的方法。基本上,您将定义一个可以导入到 Javascript 中并与之交互的 C API/ABI。
- XPCOM 二进制组件。基本上,整个 Firefox 后端是使用二进制 XPCOM 组件编写或粘合在一起的。也可以在附加组件中实现它们,尽管入门学习曲线非常陡峭,并且文档分散在许多地方并且几乎“不完整”。另一个巨大的缺点是你需要为每个新的 Firefox 版本重新编译和重新测试你的模块(不是 js-ctypes 的情况)。
使用 Add-on SDK 会使事情进一步复杂化,但您应该已经习惯了,因为您现在正在使用 NPAPI 插件。
我建议您首先确定您的附加组件中是否真的需要二进制文件,或者是否需要 JS 实现(具有现代功能,例如类型化数组,甚至可能通过 emscripten 实现 asm.js)和 HTML5(画布、音频/视频)也可以。如果没有,至少轻量级的 js-ctypes 可以。
此外,Firefox 中的 NPAPI 插件现在并没有消失。它们暂时可用,但用户必须启用它们(点击播放)。目前,附加组件可能会解决这个问题,根据需要启用它们。所以没有必要急于求成。