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

Reply via email to