Я использую WebKitGTK+ в более крупном приложении GTKmm/C++. Я использую JavaScriptCore для взаимодействия с WebKitWebFrame и JContext внутри.
Теперь я застрял, так как мне нужно взаимодействовать с компонентом графического интерфейса GTK при вызове функции 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)
Итак, все работает, за исключением того, что мне нужен экземпляр моего объекта в обратном вызове, чтобы вернуться к компоненту графического интерфейса, которым мне нужно манипулировать.
На SO есть множество подобных вопросов, но большинство из них сосредоточено на передаче экземпляра объекта в обратный вызов. Я не вижу способа сделать это с помощью этого API.
Любые идеи?
Data
к объектуArguments
, который, по крайней мере, передается функции. Спасает от стольких хлопот. - person namuol   schedule 18.08.2013