连接一个C++;使用Webkit/JavascriptCore创建Javascript事件侦听器的函数
我正在使用Webkit插件工具在嵌入式环境中实现连接一个C++;使用Webkit/JavascriptCore创建Javascript事件侦听器的函数,javascript,webkit,javascriptcore,Javascript,Webkit,Javascriptcore,我正在使用Webkit插件工具在嵌入式环境中实现标记。(对于那些感兴趣的人,我的灵感来自) 我成功地连接了插件的方法和属性,以映射HTML5标记应该在Webkit类中公开的方法和属性(我知道如何查询属性和调用简单方法),但我现在想知道我的插件如何将数据传递回MediaPlayer接口 我的插件在JavaScript中实现了addEventListener()接口,因此我想我可以使用它将MediaPlayer客户端注册为EventListener,但我不知道如何注册 我想做的是这样: Plug
标记。(对于那些感兴趣的人,我的灵感来自)
我成功地连接了插件的方法和属性,以映射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);
有了这段代码,每当我的插件对象广播一个事件时,我就会看到代码在我的回调
静态函数中登陆
现在我只需要找到一种方法来传递我需要的私有数据,这样我就可以从这个静态函数中修改运行时值