Firefox提供了XPCOM API接口,用于在C ++中编写附加类,并允许第三方Web应用程序访问它们。我想知道 - 有没有其他方法可以实现这些好处(即在C ++中编写附加组件并提供JavaScript接口,因此任何JavaScript应用程序都可以使用此接口并最终使用C ++类功能)?
答案 0 :(得分:1)
是的,可以用C ++(或Javascript)编写XPCOM组件并将它们公开给网站。您可以在JavaScript-global-property
,JavaScript-global-constructor
等类别或类别中注册它们。
如果有的话,这些东西通常没有很好的记录。如果您想了解更多信息,请阅读代码(例如,在mxr上)。
但出于很多原因,强烈建议不这样做:
JavaScript-global-property
和好友!MDN有一些关于网页到扩展程序通信的文章,反之亦然,例如,您可以使用,例如"Interaction between privileged and non-privileged pages"
此外,不建议在扩展中发布二进制XPCOM组件:
相反,您应尽可能尝试使用Javascript,和/或使用C-API / ABI创建普通二进制库(.so,.dll,.dylib)并使用js-ctypes。您可以在javascript中实现您的XPCOM组件,然后使用js-ctypes调用您的库。 AFAIK大多数附加组件现在都转换为js-ctypes。