5

我最近开发了一个谷歌浏览器扩展,它使用了一个使用 FireBreath 框架制作的 NPAPI 插件。我刚刚发现 google 将很快停止使用这些类型的插件,并最终禁止所有使用它们的现有扩展。所以,我想最终转向 NaCl / PPAPI 架构,但我不确定这个架构是否甚至可以支持我目前在 NPAPI 插件中所做的事情。

在我当前的 NPAPI 插件中,我支持 OSX 和 Windows。在 OSX 版本上,插件执行 system() 函数,该函数执行一个小的 1 行 applescript。它看起来像这样:

osascript -e 'tell app ... 

在 Windows 版本上,它执行 COM 库中的函数。两个版本最终都做了同样的事情。我的另一个选择是执行 python 脚本,如果我要走这条路,我很可能希望将 python 嵌入到本机组件中。

使用 NaCl / PPAPI 是否有任何可能?

4

3 回答 3

5

运行任意 system() 函数或从 COM 库执行任意函数的能力是 NPAPI 弃用的第一大原因。同上执行 python 脚本(当然,您可以在 NaCl 中执行 python 脚本 - 但它也无法调用 system() 函数或 COM 库)。

这不是新闻:正如 Chromium 发布当天的 Chrome 漫画书中所述,NPAPI 插件不受限制,这是一个大问题:http ://www.google.com/googlebooks/chrome/small_30.html

即使在当时,也很明显,这种情况只能容忍这么久。插件被容忍了五年,因为没有它们一些重要的事情是无法实现的,但现在是时候杀死插件并确保浏览器中的任何东西都不能直接访问操作系统。

如果你想实现一些目前无法在浏览器中实现的功能,因为没有合适的 API,正确的方法是在 chromium-dev 上询问它并将这个 API 添加到 Chromium(也可能是其他浏览器)。例如,最近添加了对 COM 端口(不是库)的访问(参见http://developer.chrome.com/apps/app_hardware.html)。

于 2013-10-02T22:17:22.663 回答
3

由于您已经在使用扩展,您可能希望将Native Messaging视为您使用 NPAPI 的替代品。

于 2013-10-03T00:01:05.520 回答
0

如果您不需要浏览器和应用程序之间的交互,则可以使用外部协议支持。您需要在 Windows 的注册表中注册协议。我不知道外部协议如何在 OSX 上工作。当用户单击外部协议链接时,Chrome 会显示一个对话框,允许用户启动应用程序。

于 2013-10-03T07:52:18.760 回答