WebKit2.WebView.call_async_javascript_function (original) (raw)
Method
WebKit2WebViewcall_async_javascript_function
since: 2.40
Declaration [src]
void
webkit_web_view_call_async_javascript_function (
WebKitWebView* web_view,
const char* body,
gssize length,
GVariant* arguments,
const char* world_name,
const char* source_uri,
GCancellable* cancellable,
GAsyncReadyCallback callback,
gpointer user_data
)
Description [src]
Asynchronously call body
with arguments
in the script world with name world_name
of the main frame current context in web_view
. The arguments
values must be one of the following types, or contain only the following GVariant types: number, string and dictionary. The result of the operation can be a Promise that will be properly passed to the callback. If world_name
is NULL
, the default world is used. Any value that is not NULL
is a distin ct world. The source_uri
will be shown in exceptions and doesn’t affect the behavior of the script. When not provided, the document URL is used.
Note that if WebKitSettings:enable-javascript
is FALSE
, this method will do nothing. If you want to use this method but still prevent web content from executing its own JavaScript, then use WebKitSettings:enable-javascript-markup
.
When the operation is finished, callback
will be called. You can then callwebkit_web_view_call_async_javascript_function_finish()
to get the result of the operation.
This is an example that shows how to pass arguments to a JS function that returns a Promise that resolves with the passed argument:
`static void web_view_javascript_finished (GObject *object, GAsyncResult *result, gpointer user_data) { JSCValue *value; GError *error = NULL;
value = webkit_web_view_call_async_javascript_function_finish (WEBKIT_WEB_VIEW (object), result, &error);
if (!value) {
g_warning ("Error running javascript: %s", error->message);
g_error_free (error);
return;
}
if (jsc_value_is_number (value)) {
gint32 int_value = jsc_value_to_string (value);
JSCException *exception = jsc_context_get_exception (jsc_value_get_context (value));
if (exception)
g_warning ("Error running javascript: %s", jsc_exception_get_message (exception));
else
g_print ("Script result: %d\n", int_value);
g_free (str_value);
} else {
g_warning ("Error running javascript: unexpected return value");
}
webkit_javascript_result_unref (js_result);
}
static void web_view_evaluate_promise (WebKitWebView *web_view) { GVariantDict dict; g_variant_dict_init (&dict, NULL); g_variant_dict_insert (&dict, "count", "u", 42); GVariant *args = g_variant_dict_end (&dict); const gchar *body = "return new Promise((resolve) => { resolve(count); });"; webkit_web_view_call_async_javascript_function (web_view, body, -1, arguments, NULL, NULL, NULL, web_view_javascript_finished, NULL); } `
Available since: 2.40
Parameters
body
Type: const char*
The function body.
The data is owned by the caller of the method. |
---|
The value is a NUL terminated UTF-8 string. |
length
Type: gssize
Length of body
, or -1 if body
is a nul-terminated string.
arguments
Type: GVariant
A GVariant
with format a{sv}
storing the function arguments, or NULL
.
The argument can be NULL. |
---|
The data is owned by the caller of the method. |
world_name
Type: const char*
The name of a WebKitScriptWorld
or NULL
to use the default.
The argument can be NULL. |
---|
The data is owned by the caller of the method. |
The value is a NUL terminated UTF-8 string. |
source_uri
Type: const char*
The source URI.
The argument can be NULL. |
---|
The data is owned by the caller of the method. |
The value is a NUL terminated UTF-8 string. |
cancellable
Type: GCancellable
A GCancellable
or NULL
to ignore.
The argument can be NULL. |
---|
The data is owned by the caller of the method. |
callback
Type: GAsyncReadyCallback
A GAsyncReadyCallback
to call when the script finished.
The argument can be NULL
.
user_data
Type: gpointer
The data to pass to callback function.
The argument can be NULL. |
---|
The data is owned by the caller of the method. |