我在更大的 GTKmm/C++ 应用程序中使用 WebKitGTK+。我正在使用 JavaScriptCore 与其中的 WebKitWebFrame 和 JSContext 进行交互。
我现在卡住了,因为在调用 javascript 函数时我需要与 GTK GUI 组件进行交互。为此我找到了JSObjectMakeFunctionWithCallback函数。
JSStringRef str = JSStringCreateWithUTF8CString("ClickCallback");
JSObjectRef func = JSObjectMakeFunctionWithCallback(m_jsRef, str, ClickCallback);
JSObjectSetProperty(m_jsRef, JSContextGetGlobalObject(m_jsRef), str, func, kJSPropertyAttributeNone, NULL);
JSStringRelease(str);
回调必须定义为带有 def 的静态函数:
static JSValueRef ClickCallback(JSContextRef ctx, JSObjectRef func, JSObjectRef self, size_t argc, const JSValueRef argv[], JSValueRef* exception)
所以一切正常,除了我需要回调中的对象实例来返回我需要操作的 GUI 组件。
关于 SO 有很多类似的问题,但大多数集中在将对象实例传递给回调。我看不到使用此 API 的方法。
有任何想法吗?