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

use*_*406 4 firefox npapi firefox-addon browser-plugin firefox-addon-sdk

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

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

对于Chrome,如果我想从JavaScript执行一些C++代码,我有几个选项,比如转移到Native Client(NaCl).

但是我在Firefox中的选择是什么?

基本上,我有一个使用Add-on SDK构建的Firefox附加组件,我想从附加内容脚本(JavaScript)调用一些C++代码.我之前使用的是NPAPI,但现在我想转向更长期支持的东西.

提前致谢.

nma*_*ier 5

安装NPAPI插件只是为了"调用一些C++代码"实际上并不是一件好事.NPAPI插件将可用于所有网站,而不仅仅是您的插件......如果随机网站以您不期望的方式访问它,您是否确保这些内容不会中断?

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

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

使用附加SDK会使问题进一步复杂化,但是你应该已经习惯了,因为你现在正在使用NPAPI插件.

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

此外,Firefox中的NPAPI插件目前还没有消失.目前它们将可用,但用户必须启用它们(点击播放).加载项可能可以解决这个问题,现在可以根据需要启用它们.所以没有必要急于求成.