看着此页来自firebreath.org,我发现了这段节选:
您可以以JavaScript的形式将JSAPI实例返回给JSAPIPtr调用者,并使用该实例对不同的JSAPI对象进行调用,例如plugin()、.method1()、.method2()将调用根JSAPI对象上的method1()和在第一次调用中返回的JSAPI对象的method2()。
有什么例子吗?
我的目标:
我希望通过我的根JSAPI对象调用另一个类的成员(也正在实现FB:JSAPIAuto)成员(例如ABCAPI:FB:JSAPIAuto ),JSAPI对象是由预置脚本自动创建的,与前面通过创建类的JSAPIPtr所描述的相同。我就在这儿吗?
另外,我创建的ABCAPI的JSAPI对象是否也应该由获得一个插件引用?
我也通过了此页,但无法跟上。
到目前为止,我可以创建一个返回FB::JSAPIPtr的方法,该方法具有另一个Class (实现FB::JSAPIAuto)指针的值。
一个小小的例子在这里是一个很大的帮助!
*另一个疑问:如何向Javascript公开一个简单的c++类(而不是扩展任何火呼吸类),以便我能够访问它的成员?*我找到了一个v8 Javascript引擎。我希望我的插件也可以用于所有其他浏览器,除了chrome.Do,我需要这个吗?
发布于 2013-07-18 12:34:48
好吧,这里有几件事。首先,prep脚本不为您创建JSAPI对象--即fbgen。这是一个重要的区别,因为您将多次运行prep脚本,但fbgen只运行一次以创建项目框架。
接下来,你让这件事变得比需要复杂得多。JSAPI对象只是一个类对象;如果在C++中有对它的引用,就可以像调用任何其他对象一样调用另一个类的成员。它没有什么神奇之处,除非您将其交给javascript,然后您向javascript公开的方法是您唯一可以使用的方法。
您尚未解释的是对第二个JSAPI对象的引用来自何处。你是从javascript传进来的吗?如果是这样的话,事情会变得更加棘手,您将不得不使用->Invoke调用它,就像在从页面传入的任何其他javascript对象上使用的方法一样。是在c++中创建的吗?如果是这样的话,那么您只需像其他任何对象一样使用它。
至于假设的ABCAPI对象是否应该获得插件引用,这完全取决于您。根JSAPI对象不需要一个,这只是为了您的方便,以防您想要访问插件。
例如,查看一下防火墙代码库中的FBTestPlugin。它有嵌套JSAPI对象的例子等等。
https://stackoverflow.com/questions/17716199
复制相似问题