Я использую WebKitGTK + в более крупном приложении GTKmm / C ++. Я использую JavaScriptCore для взаимодействия с WebKitWebFrame и JSContext внутри.
Я застрял сейчас, когда мне нужно взаимодействовать с компонентом GTK GUI, когда вызывается функция javascript. С этой целью я нашел функцию 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.
Есть идеи?