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

标签 firefox firefox-addon firefox-addon-sdk npapi browser-plugin

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

参见http://techcrunch.com/2013/09/23/say-goodbye-to-npapi/

对于 Chrome,如果我想从 JavaScript 执行一些 C++ 代码,我有几个选择,例如迁移到 Native Client (NaCl)。

但是我在 Firefox 中有哪些选项?

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

提前致谢。

最佳答案

仅仅为了“调用一些C++代码”而安装NPAPI插件实际上并不是一件好事。 NPAPI 插件将适用于所有网站,而不仅仅是您的附加组件...您是否确保如果随机网站以您意想不到的方式访问这些内容,这些内容不会损坏?

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

  1. js-ctypes是最不痛苦且推荐的方法。基本上,您将定义一个可以导入到 Javascript 中并与之交互的 C API/ABI。
  2. XPCOM 二进制组件。基本上整个 Firefox 后端都是使用二进制 XPCOM 组件编写或粘合在一起的。也可以在附加组件中实现它们,尽管入门的学习曲线相当陡峭,并且文档分散在许多地方并且几乎“不完整”。另一个巨大的缺点是您需要为每个新的 Firefox 版本重新编译和重新测试模块(js-ctypes 则不然)。

使用附加 SDK 会使事情变得更加复杂,但您应该已经习惯了,因为您现在正在使用 NPAPI 插件。

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

此外,Firefox 中的 NPAPI 插件目前还不会消失。目前它们将可用,但用户必须启用它们(点击播放)。附加组件可能可以解决这个问题,暂时根据需要启用它们。所以没必要着急。

关于firefox - Chrome 和 Firefox 不会长期支持 NPAPI。我有什么选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19011884/

相关文章:

python - 无法找到 id python selenium

jquery - Firefox 上 html() 事件期间的换行符

javascript - Firefox:navigator.getUserMedia 不是函数

javascript - firefox 不重启 Bootstrap 扩展脚本不重新加载

jQuery 只在 contentScripts 中定义?

html - Mozilla Firefox 不从本地机器加载图像

javascript - 检测 Firefox 扩展版本

javascript - Firefox Addons SDK - 如何从内容脚本访问简单存储?

javascript - 在后台对网站进行高效轮询? (Firefox 插件 SDK)

用于截屏的 Firefox 插件 API