Hi,
I'm trying to inject javascript code on each page load but it fails on the first load every time. If I reload the page it works. How do I fix this? Is there something I've missed in the code below? The printfs work but the js-code does not get injected. #include <gtk/gtk.h> #include <webkit/webkit.h> GtkWidget *window; GtkWidget *webview; static void handle_script_message(WebKitUserContentManager *manager, JSCValue* value, gpointer user_data) { printf("handle_script_message()%s\n", value); } static void web_view_load_changed(WebKitWebView *web_view, WebKitLoadEvent load_event, gpointer user_data) { switch(load_event) { case WEBKIT_LOAD_FINISHED: printf("WEBKIT_LOAD_FINISHED %s\n", webkit_web_view_get_uri(web_view)); WebKitUserScript *script = webkit_user_script_new( "window.test = 12345; console.log(window.test);", WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_END, NULL, NULL ); WebKitUserContentManager *manager = webkit_web_view_get_user_content_manager(web_view); webkit_user_content_manager_add_script( manager, script ); webkit_user_script_unref(script); printf("SCRIPTS LOADED\n"); break; } } static void activate(GtkApplication* app, gpointer user_data) { window = gtk_application_window_new (app); gtk_window_set_title(GTK_WINDOW (window), "Webkit Test"); gtk_window_set_default_size(GTK_WINDOW (window), 800, 600); // Create a browser instance webview = webkit_web_view_new(); WebKitSettings *settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW(webview)); g_object_set(G_OBJECT(settings), "enable-developer-extras", TRUE, NULL); WebKitUserContentManager *manager = webkit_web_view_get_user_content_manager(WEBKIT_WEB_VIEW(webview)); g_signal_connect(manager, "script-message-received::testjs", G_CALLBACK(handle_script_message), NULL); webkit_user_content_manager_register_script_message_handler(manager, "testjs", NULL); g_signal_connect(webview, "load-changed", G_CALLBACK(web_view_load_changed), NULL); webkit_web_view_load_uri(WEBKIT_WEB_VIEW(webview), "https://mytestserver"); gtk_window_set_child(GTK_WINDOW (window), webview); gtk_window_present(GTK_WINDOW(window)); WebKitWebInspector *inspector = webkit_web_view_get_inspector (WEBKIT_WEB_VIEW(webview)); webkit_web_inspector_show (WEBKIT_WEB_INSPECTOR(inspector)); } int main(int argc, char *argv[]) { GtkApplication *app; int status; app = gtk_application_new ("my.test.app", G_APPLICATION_DEFAULT_FLAGS); g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); status = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app); return status; } Regards, Erik
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev