static void web_view_javascript_finished(GObject *object, GAsyncResult *result, gpointer user_data) { WebKitJavascriptResult *js_result; JSValueRef value; JSGlobalContextRef context; GError *error = NULL; js_result = webkit_web_view_run_javascript_finish(WEBKIT_WEB_VIEW(object), result, &error); if (!js_result) { g_warning ("Error running javascript: %s", error->message); g_error_free (error); return; } context = webkit_javascript_result_get_global_context(js_result); value = webkit_javascript_result_get_value(js_result); if (JSValueIsString(context, value)) { JSStringRef js_str_value; gchar *str_value; gsize str_length; js_str_value = JSValueToStringCopy(context, value, NULL); str_length = JSStringGetMaximumUTF8CStringSize(js_str_value); str_value = (gchar *)g_malloc(str_length); JSStringGetUTF8CString(js_str_value, str_value, str_length); JSStringRelease(js_str_value); g_free (str_value); } else { g_warning("Error running javascript: unexpected return value"); } webkit_javascript_result_unref(js_result); }
static void js_cb (GObject *src, GAsyncResult *res, gpointer data) { WebKitJavascriptResult *jsres; GError *err = NULL; jsres = webkit_web_view_run_javascript_finish (WEBKIT_WEB_VIEW (src), res, &err); if (!jsres) { g_printerr ("Error running javascript: %s\n", err->message); g_error_free (err); return; } webkit_javascript_result_unref (jsres); }
static void runJavaScriptReadyCallback(GObject*, GAsyncResult* result, WebViewTest* test) { test->m_javascriptResult = webkit_web_view_run_javascript_finish(test->m_webView, result, test->m_javascriptError); g_main_loop_quit(test->m_mainLoop); }
static void get_javascript_result( GObject *object, GAsyncResult *result, gpointer user_data) { g_printf("Here? Surely?\n"); WebKitJavascriptResult *js_result; JSValueRef value; JSGlobalContextRef context; GError *error = NULL; js_result = webkit_web_view_run_javascript_finish (WEBKIT_WEB_VIEW (object), result, &error); if (!js_result) { g_warning ("Error running javascript: %s", error->message); g_error_free (error); return; } g_printf("I'm here innit 1\n"); context = webkit_javascript_result_get_global_context (js_result); g_printf("I'm here innit 2\n"); value = webkit_javascript_result_get_value (js_result); int value_type = JSValueGetType(context, value); switch (value_type) { case kJSTypeUndefined: g_printf("Value undefined!\n"); break; case kJSTypeNull: g_printf("Value null!\n"); break; case kJSTypeBoolean: g_printf("Value boolean!\n"); break; case kJSTypeNumber: g_printf("Value number!\n"); break; case kJSTypeString: g_printf("Value string!\n"); break; case kJSTypeObject: g_printf("Value object!\n"); break; } if (JSValueIsString (context, value)) { g_printf("I'm here innit 3\n"); JSStringRef js_str_value = JSValueToStringCopy(context, value, NULL); gsize str_length = JSStringGetMaximumUTF8CStringSize(js_str_value); gchar *str_value; g_printf("String length: %d\n", str_length); str_value = (gchar *)g_malloc (str_length); JSStringGetUTF8CString (js_str_value, str_value, str_length); JSStringRelease (js_str_value); g_print ("Script result: %s\n", str_value); g_free (str_value); } else { g_warning ("Error running javascript: unexpected return value"); } webkit_javascript_result_unref (js_result); }