From c2be3d67cfb6b13af5a4383f1cd8072cd8215396 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Wed, 26 May 2010 22:41:13 +0200 Subject: [PATCH] Recognize more characters as next page and be more tolerant --- midori/midori-view.c | 77 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 64 insertions(+), 13 deletions(-) diff --git a/midori/midori-view.c b/midori/midori-view.c index aefaa23b..655b1df5 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,