从根JSAPI对象调用另一个JSAPI对象的类成员(由prepscript创建)

时间:2013-07-18 06:34:20

标签: javascript plugins callback firebreath

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以外的所有其他浏览器。我需要这个吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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