C++; Firefox提供了XPCOM API接口,用于编写C++中的附加类,并允许第三方Web应用程序访问它们。我想知道,还有其他方法可以实现这些好处吗?(即在C++中添加一个附加的程序,提供一个JavaScript接口,那么任何JavaScript应用程序都可以使用这个接口,最终C++ C++功能)?< /P> < P>是的,可以用C++编写XPCOM组件(或者JavaScript用于这方面),并将它们公开到网站上。您可以在JavaScript全局属性、JavaScript全局构造函数等类别中注册它们。 这些东西通常没有很好的记录,如果有的话。如果您想了解更多信息,请阅读代码(例如on)
但由于许多原因,这样做是非常不受欢迎的:C++; Firefox提供了XPCOM API接口,用于编写C++中的附加类,并允许第三方Web应用程序访问它们。我想知道,还有其他方法可以实现这些好处吗?(即在C++中添加一个附加的程序,提供一个JavaScript接口,那么任何JavaScript应用程序都可以使用这个接口,最终C++ C++功能)?< /P> < P>是的,可以用C++编写XPCOM组件(或者JavaScript用于这方面),并将它们公开到网站上。您可以在JavaScript全局属性、JavaScript全局构造函数等类别中注册它们。 这些东西通常没有很好的记录,如果有的话。如果您想了解更多信息,请阅读代码(例如on),firefox,firefox-addon,Firefox,Firefox Addon,但由于许多原因,这样做是非常不受欢迎的: 很难确保这些东西实际上是安全的,并使其工作可靠 很难控制哪些网站实际使用新的APIJavaScript全局属性和好友将可访问所有网站 您的加载项将在全局javascript命名空间中引入新名称,这可能与网站代码冲突。(因此,许多新的WebAPI没有直接引入全局名称空间,而是成为navigator的一个属性) 由于这些原因,addons.mozilla.org网站将只接受使用此机制的加载项,作为规则的例外,并且仅当作者证明需要使用并且没有真正的替代方案时
- 很难确保这些东西实际上是安全的,并使其工作可靠
- 很难控制哪些网站实际使用新的API<代码>JavaScript全局属性和好友将可访问所有网站李>
- 您的加载项将在全局javascript命名空间中引入新名称,这可能与网站代码冲突。(因此,许多新的WebAPI没有直接引入全局名称空间,而是成为navigator的一个属性)
- 由于这些原因,addons.mozilla.org网站将只接受使用此机制的加载项,作为规则的例外,并且仅当作者证明需要使用并且没有真正的替代方案时
- 您需要针对每个Gecko版本(每六周)重新编译二进制文件,因为自Firefox4以来,二进制组件都有版本标签
- (点)版本之间的二进制API/ABI并不像您希望的那样稳定。实际上,API/ABI经常在游戏后期意外中断,导致许多用户出现大量不必要的崩溃,例如
- 平台开发者
很抱歉,现在大多数加载项都切换到js ctypes了。非常感谢您提供了详尽的答案!你能建议一下有哪些可能的替代方案吗?