连接一个C++;使用Webkit/JavascriptCore创建Javascript事件侦听器的函数

连接一个C++;使用Webkit/JavascriptCore创建Javascript事件侦听器的函数,javascript,webkit,javascriptcore,Javascript,Webkit,Javascriptcore,我正在使用Webkit插件工具在嵌入式环境中实现标记。(对于那些感兴趣的人,我的灵感来自) 我成功地连接了插件的方法和属性,以映射HTML5标记应该在Webkit类中公开的方法和属性(我知道如何查询属性和调用简单方法),但我现在想知道我的插件如何将数据传递回MediaPlayer接口 我的插件在JavaScript中实现了addEventListener()接口,因此我想我可以使用它将MediaPlayer客户端注册为EventListener,但我不知道如何注册 我想做的是这样: Plug

我正在使用Webkit插件工具在嵌入式环境中实现
标记。(对于那些感兴趣的人,我的灵感来自)

我成功地连接了插件的方法和属性,以映射HTML5标记应该在Webkit类中公开的方法和属性(我知道如何查询属性和调用简单方法),但我现在想知道我的插件如何将数据传递回MediaPlayer接口

我的插件在JavaScript中实现了
addEventListener()
接口,因此我想我可以使用它将MediaPlayer客户端注册为EventListener,但我不知道如何注册

我想做的是这样:

  Plugin                    WebKit
+--------------+         +-----------------------------+
|              |         |                             |
|          <-------------|-+addEventListener(callback) |
|              |         |                             |
|+----------+  |         |                             |
||          |  |         |                             |
|| onEvent  |  |         |                             |
|+----------+--------------> callback( EventData )     |
|              |         |                             |
+--------------+         +-----------------------------+
插件WebKit
+--------------+         +-----------------------------+
|              |         |                             |
|回调(EventData)|
|              |         |                             |
+--------------+         +-----------------------------+

我不知道,我如何调用插件的方法<代码> AdvestTistListabor/代码>,并传递一个JSObjor对象,它引用了我的C++中的静态回调。 你知道怎么做吗


(感谢ASCII图纸)

对于感兴趣的人,解决方案如下:

// event name is the name of the event I want to subscribe to
// callback is a static function with the 'JSObjectCallAsFunctionCallback' prototype
JSObjectRef callbackObject = JSObjectMakeFunctionWithCallback(ctx, JSStringRef(), callback);
JSValue js_cb[3] = {
    toJS(state, (const JSValueRef)JSValueMakeString (ctx, JSStringCreateWithUTF8CString(eventName))),
    toJS(state, (const JSValueRef)callbackObject),
    toJS(state, (const JSValueRef)JSValueMakeBoolean(ctx, false))
};
ArgList args(js_cb, 3);

return invokeMethod("addEventListener", args);
有了这段代码,每当我的插件对象广播一个事件时,我就会看到代码在我的
回调
静态函数中登陆

现在我只需要找到一种方法来传递我需要的私有数据,这样我就可以从这个静态函数中修改运行时值