看this page from firebreath.org我发现了这段摘录:
您可以以JSAPIPtr的形式将JSAPI实例返回给JavaScript调用者,并使用它来对不同的JSAPI对象进行调用,例如: plugin()。method1()。method2()将调用Root JSAPI对象上的method1()和第一次调用中返回的JSAPI对象上的method2()。
任何例子?
我想通过我的根JSAPI对象调用另一个类(也就是实现FB:JSAPIAuto)成员(比如ABCAPI:FB:JSAPIAuto),该对象由prepscript自动创建,也就是如上所述,通过创建JSAPIPtr类。我在这儿吗?
另外,我创建的ABCAPI的JSAPI对象是否也是否会获得插件引用?
我也经历了this page,但我无法跟进。
直到现在,我可以创建一个返回FB :: JSAPIPtr的方法,该方法具有另一个Class(实现FB :: JSAPIAuto)指针的值。
一个小例子在这里会有很大的帮助!
* 另一个疑问: 你如何将一个简单的c ++类(不扩展任何Firebreath类)暴露给Javascript以便我可以访问它的成员? *我找到了一个v8 Javascript引擎的东西。对此没有任何想法。我希望我的插件可以用于除chrome以外的所有其他浏览器。我需要这个吗?
答案 0 :(得分:0)
好的,这里有几件事。首先,准备脚本不会为您创建JSAPI对象 - 这是fbgen。这是一个重要的区别,因为您将多次运行准备脚本,但fbgen只运行一次以创建项目框架。
接下来,你要做的远比它需要的复杂得多。 JSAPI对象只是一个类对象;如果你在C ++中有它的引用,你可以像调用任何其他对象一样调用另一个类的成员。没有任何神奇的东西,除非你把它交给javascript,然后只是你暴露给javascript的方法是你可以使用的唯一方法。
您尚未解释的是对第二个JSAPI对象的引用来自何处。你是从javascript传递它吗?如果是这样,事情变得更加棘手,你必须使用 - >调用它,就像你在页面传入的任何其他javascript对象上的方法一样。你用c ++创建了吗?如果是这样,那么你就像任何其他对象一样使用它。
关于假设的ABCAPI对象是否应该获得插件引用,这完全取决于你。 Root JSAPI对象并不需要,只是为了方便您访问插件。
例如,请查看firebreath代码库中的FBTestPlugin。它有嵌套JSAPI对象等的示例。