[Xfce4-commits] <midori:master> Recognize more characters as next page and be more tolerant
Christian Dywan
noreply at xfce.org
Wed May 26 23:06:01 CEST 2010
Updating branch refs/heads/master
to c2be3d67cfb6b13af5a4383f1cd8072cd8215396 (commit)
from 5f8e9da610ad396aff86cd3699fbe66da1d63877 (commit)
commit c2be3d67cfb6b13af5a4383f1cd8072cd8215396
Author: Christian Dywan <christian at twotoasts.de>
Date: Wed May 26 22:41:13 2010 +0200
Recognize more characters as next page and be more tolerant
midori/midori-view.c | 77 +++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 64 insertions(+), 13 deletions(-)
diff --git a/midori/midori-view.c b/midori/midori-view.c
index aefaa23..655b1df 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -4657,12 +4657,38 @@ midori_view_get_previous_page (MidoriView* view)
web_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (view->web_view));
js_context = webkit_web_frame_get_global_context (web_frame);
katze_assign (uri, sokoke_js_script_eval (js_context,
- "(function (l) { for (i in l) "
- "if ((l[i].rel && l[i].rel == 'prev') "
- " || (l[i].innerHTML"
- " && l[i].innerHTML.toLowerCase ().indexOf ('prev') != -1)) "
- "{ return l[i].href; } return 0; })("
- "document.getElementsByTagName ('a'));", NULL));
+ "(function (l) {"
+ "var ind = ['prev','←','«','<'];"
+ "var nind = ['next','→','»','>'];"
+ "for (i in l)"
+ "if (l[i].rel && (l[i].rel == ind[0]))"
+ "return l[i].href;"
+ "for (j in ind)"
+ "for (i in l)"
+ "if (l[i].innerHTML"
+ "&& (l[i].innerHTML.toLowerCase ().indexOf (ind[j]) != -1)"
+ "&& (l[i].innerHTML.toLowerCase ().indexOf (nind[j]) == -1))"
+ "return l[i].href;"
+ "var wa = window.location.href.split (/\\d+/);"
+ "var wn = window.location.href.split (/[^\\d]+/);"
+ "wn = wn.slice (1,wn.length - 1);"
+ "var cand = [];"
+ "for (i in wn)"
+ "{"
+ "cand[i] = '';"
+ "for (j = 0; j <= i; j++)"
+ "{"
+ "cand[i] += wa[j];"
+ "if (wn[j])"
+ "cand[i] += parseInt (wn[j]) - ((i == j) ? 1 : 0);"
+ "}"
+ "}"
+ "for (j in cand)"
+ "for (i in l)"
+ "if (l[i].href && (l[i].href.indexOf (cand[j]) == 0))"
+ "return l[i].href;"
+ "return 0;"
+ "}) (document.getElementsByTagName ('a'));", NULL));
return uri && uri[0] != '0' ? uri : NULL;
}
@@ -4688,15 +4714,40 @@ midori_view_get_next_page (MidoriView* view)
web_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (view->web_view));
js_context = webkit_web_frame_get_global_context (web_frame);
katze_assign (uri, sokoke_js_script_eval (js_context,
- "(function (l) { for (i in l) "
- "if ((l[i].rel && l[i].rel == 'next') "
- " || (l[i].innerHTML"
- " && l[i].innerHTML.toLowerCase ().indexOf ('next') != -1)) "
- "{ return l[i].href; } return 0; })("
- "document.getElementsByTagName ('a'));", NULL));
+ "(function (l) {"
+ "var ind = ['next','→','»','>'];"
+ "var nind = ['prev','←','«','<'];"
+ "for (i in l)"
+ "if (l[i].rel && (l[i].rel == ind[0]))"
+ "return l[i].href;"
+ "for (j in ind)"
+ "for (i in l)"
+ "if (l[i].innerHTML"
+ "&& (l[i].innerHTML.toLowerCase ().indexOf (ind[j]) != -1)"
+ "&& (l[i].innerHTML.toLowerCase ().indexOf (nind[j]) == -1))"
+ "return l[i].href;"
+ "var wa = window.location.href.split (/\\d+/);"
+ "var wn = window.location.href.split (/[^\\d]+/);"
+ "wn = wn.slice (1,wn.length - 1);"
+ "var cand = [];"
+ "for (i in wn)"
+ "{"
+ "cand[i] = '';"
+ "for (j = 0; j <= i; j++)"
+ "{"
+ "cand[i] += wa[j];"
+ "if (wn[j])"
+ "cand[i] += parseInt (wn[j]) + ((i == j) ? 1 : 0);"
+ "}"
+ "}"
+ "for (j in cand)"
+ "for (i in l)"
+ "if (l[i].href && (l[i].href.indexOf (cand[j]) == 0))"
+ "return l[i].href;"
+ "return 0;"
+ "}) (document.getElementsByTagName ('a'));", NULL));
return uri && uri[0] != '0' ? uri : NULL;
}
-
#if WEBKIT_CHECK_VERSION (1, 1, 5)
static GtkWidget*
midori_view_print_create_custom_widget_cb (GtkPrintOperation* operation,
More information about the Xfce4-commits
mailing list