0

查看来自 firebreath.org 的此页面,我发现了以下摘录:

您可以以 JSAPIPtr 的形式将 JSAPI 实例返回给 JavaScript 调用者,并使用它来调用不同的 JSAPI 对象,例如 plugin().method1().method2() 将在 Root JSAPI 对象上调用 method1()和第一次调用中返回的 JSAPI 对象上的 method2()。

有什么例子吗?

我的目标:

我想通过我的根 JSAPI 对象调用另一个类的(它也实现 FB:JSAPIAuto)成员(比如 ABCAPI:FB:JSAPIAuto ),该对象由 prepscript 自动创建,即与上面通过创建类的 JSAPIPtr 描述的相同。我在这里吗?

另外,我创建的 ABCAPI 的 JSAPI 对象是否应该获得插件引用?

我也浏览了此页面,但无法关注。

到目前为止,我可以创建一个返回 FB::JSAPIPtr 的方法,该方法具有另一个类(实现 FB::JSAPIAuto)指针的值。

一个小例子在这里会有很大的帮助!

*另一个疑问:你如何向 Javascript 公开一个简单的 c++ 类(不扩展任何 Firebreath 类)以便我可以访问它的成员?*我发现了一个 v8 Javascript 引擎的东西。对此一无所知。我希望我的插件也可用于除 chrome 之外的所有其他浏览器。我需要这个吗?

4

1 回答 1

0

好的,这里有几件事。首先,准备脚本不会为您创建 JSAPI 对象——那是 fbgen。这是一个重要的区别,因为您将多次运行 prep 脚本,但您只运行一次 fbgen 来创建项目框架。

接下来,您将使其变得比需要的复杂得多。一个 JSAPI 对象只是一个类对象;如果您在 C++ 中有对它的引用,则可以像调用任何其他对象一样调用其他类的成员。它没有什么神奇之处,除非你把它交给 javascript,然后你暴露给 javascript 的方法是你唯一可以使用的方法。

您没有解释的是对第二个 JSAPI 对象的引用来自何处。你是从javascript传入的吗?如果是这样,事情就会变得更加棘手,您必须使用 ->Invoke 来调用它,就像对从页面传入的任何其他 javascript 对象上的方法一样。你是用c++创建的吗?如果是这样,那么您只需像使用任何其他对象一样使用它。

至于假设的 ABCAPI 对象是否应该获得插件引用,这完全取决于您。Root JSAPI 对象不需要,只是为了方便您访问插件。

例如,去看看firebreath 代码库中的FBTestPlugin。它有嵌套 JSAPI 对象等的示例。

于 2013-07-18T12:34:48.277 回答