[Xfce4-commits] <midori:master> Use a script to hide images and frames that are blocked
Christian Dywan
noreply at xfce.org
Thu Jan 14 02:30:03 CET 2010
Updating branch refs/heads/master
to bb4c381b4339ba865db3affdcfa3a6fb7e401839 (commit)
from 27567de620d3629ad365bbb8129eba0c835f3bb0 (commit)
commit bb4c381b4339ba865db3affdcfa3a6fb7e401839
Author: Alexander Butenko <a.butenka at gmail.com>
Date: Thu Jan 14 02:19:38 2010 +0100
Use a script to hide images and frames that are blocked
extensions/adblock.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 44 insertions(+), 0 deletions(-)
diff --git a/extensions/adblock.c b/extensions/adblock.c
index 46ca308..6abeeb1 100644
--- a/extensions/adblock.c
+++ b/extensions/adblock.c
@@ -636,6 +636,36 @@ adblock_is_matched (const gchar* opts,
return adblock_is_matched_by_pattern (req_uri, page_uri);
}
+static gchar*
+adblock_prepare_urihider_js (const gchar* uri)
+{
+ const char *js =
+ "(function() {"
+ "function getElementsByAttribute (strTagName, strAttributeName, strAttributeValue) {"
+ " var arrElements = document.getElementsByTagName (strTagName);"
+ " var arrReturnElements = new Array();"
+ " for (var i=0; i<arrElements.length; i++) {"
+ " var oCurrent = arrElements[i];"
+ " var oAttribute = oCurrent.getAttribute && oCurrent.getAttribute (strAttributeName);"
+ " if (oAttribute && oAttribute.length > 0 && strAttributeValue.indexOf (oAttribute) != -1)"
+ " arrReturnElements.push (oCurrent);"
+ " }"
+ " return arrReturnElements;"
+ "}"
+ "function hideElementBySrc (strUri) {"
+ " var oElements = getElementsByAttribute('img', 'src', strUri);"
+ " if (oElements.length == 0)"
+ " oElements = getElementsByAttribute ('iframe', 'src', strUri);"
+ " for (var i=0; i<oElements.length; i++) {"
+ " oElements[i].style.visibility = 'hidden !important';"
+ " oElements[i].style.width = '0';"
+ " oElements[i].style.height = '0';"
+ " }"
+ "}"
+ "hideElementBySrc ('%s');"
+ "})()";
+ return g_strdup_printf (js, uri);
+}
#if HAVE_WEBKIT_RESOURCE_REQUEST
static void
@@ -670,7 +700,21 @@ adblock_resource_request_starting_cb (WebKitWebView* web_view,
/* g_test_timer_start (); */
/* TODO: opts should be defined */
if (adblock_is_matched (NULL, req_uri, page_uri))
+ {
+ gchar* script = adblock_prepare_urihider_js (req_uri);
+ JSContextRef js_context = webkit_web_frame_get_global_context (web_frame);
+ WebKitWebFrame* main_frame;
+
webkit_network_request_set_uri (request, "about:blank");
+ sokoke_js_script_eval (js_context, script, NULL);
+ main_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (web_view));
+ if (main_frame != web_frame)
+ {
+ js_context = webkit_web_frame_get_global_context (main_frame);
+ sokoke_js_script_eval (js_context, script, NULL);
+ }
+ g_free (script);
+ }
/* g_debug ("%f", g_test_timer_elapsed ()); */
}
More information about the Xfce4-commits
mailing list