Firefox提供XPCOM API接口,可以用C++编写附加组件类,并允许第三方Web应用程序访问。我想知道是否有其他方法可以实现这些好处(即编写一个C++附加组件并提供JavaScript接口,以便任何JavaScript应用程序都可以使用此接口并最终使用C++类功能)。
MDN有几篇关于网页和扩展之间相互通信的文章,你可以使用,比如"特权和非特权页面之间的交互"。
此外,在扩展内部提供二进制XPCOM组件是不被鼓励的:
相反,您应该尽可能使用JavaScript,并/或创建一个带有C-API/ABI的普通二进制库(.so, .dll, .dylib)并使用js-ctypes。您可以在javascript中实现您的XPCOM组件,然后使用js-ctypes调用您的库。 据我所知,大多数附加组件现在已经转换为使用js-ctypes。