script.js will not be run unless the site you are visiting (or has visited in the past?) uses Javascript. This is bad. The attached patch makes surf run script.js in every newly created web view.
diff -r 7497a6945a20 surf.c --- a/surf.c Sun May 02 10:59:28 2010 +0200 +++ b/surf.c Sun May 09 19:25:18 2010 +0200 @@ -150,6 +150,19 @@ } void +runscript(WebKitWebFrame *frame, JSContextRef js) { + JSStringRef jsscript; + char *script; + JSValueRef exception = NULL; + GError *error; + + if(g_file_get_contents(scriptfile, &script, NULL, &error)) { + jsscript = JSStringCreateWithUTF8CString(script); + JSEvaluateScript(js, jsscript, JSContextGetGlobalObject(js), NULL, 0, &exception); + } +} + +void clipboard(Client *c, const Arg *arg) { gboolean paste = *(gboolean *)arg; @@ -469,6 +484,7 @@ int i; Client *c; WebKitWebSettings *settings; + WebKitWebFrame *frame; GdkGeometry hints = { 1, 1 }; char *uri, *ua; @@ -555,6 +571,8 @@ gdk_window_set_events(GTK_WIDGET(c->win)->window, GDK_ALL_EVENTS_MASK); gdk_window_add_filter(GTK_WIDGET(c->win)->window, processx, c); webkit_web_view_set_full_content_zoom(c->view, TRUE); + frame = webkit_web_view_get_main_frame(c->view); + runscript(frame, webkit_web_frame_get_global_context(frame)); settings = webkit_web_view_get_settings(c->view); if(!(ua = getenv("SURF_USERAGENT"))) ua = useragent; @@ -851,15 +869,7 @@ void windowobjectcleared(GtkWidget *w, WebKitWebFrame *frame, JSContextRef js, JSObjectRef win, Client *c) { - JSStringRef jsscript; - char *script; - JSValueRef exception = NULL; - GError *error; - - if(g_file_get_contents(scriptfile, &script, NULL, &error)) { - jsscript = JSStringCreateWithUTF8CString(script); - JSEvaluateScript(js, jsscript, JSContextGetGlobalObject(js), NULL, 0, &exception); - } + runscript(frame, js); } void
-- \ Troels /\ Henriksen