From 0083c64a3211fef5e7d7cb2bb74e2f7b02d0b22c Mon Sep 17 00:00:00 2001 From: hogelog Date: Sun, 18 Jan 2009 21:35:45 +0000 Subject: * focusPagenavi の動きの修正 git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@28636 d0d07461-0603-4401-acd4-de1884942a52 --- nextlink.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'nextlink.js') diff --git a/nextlink.js b/nextlink.js index 17a9981..79fed56 100644 --- a/nextlink.js +++ b/nextlink.js @@ -12,7 +12,7 @@ var PLUGIN_INFO = AutoPagerize 用の XPath より "[[", "]]" をマッピングします。 suVene hogelog - 0.3.1 + 0.3.2 MIT 1.2 2.0pre @@ -147,7 +147,6 @@ NextLink.prototype = { var Autopager = function() {};//{{{ Autopager.prototype = { nextLink: function(context, win, doc, count) { - var self = this; var url = doc.location.href; var value = doc[UUID]; @@ -164,6 +163,7 @@ Autopager.prototype = { return; } + if (context.is2_0later) { let css = $U.xmlToDom(pageNaviCss, doc); let node = doc.importNode(css, true); @@ -171,7 +171,8 @@ Autopager.prototype = { //doc.body.appendChild(css); } - let page = this.getCurrentPage(win, doc) + count; + let curPage = this.getCurrentPage(win, doc); + let page = (count < 0 ? Math.round : Math.floor)(curPage + count); if (page <= 1) { win.scrollTo(0, 0); return true; @@ -304,13 +305,21 @@ Autopager.prototype = { return page; }, getCurrentPage: function(win, doc) { - var page = 1; + var page = 1.0; var xpath = '//*[@class="vimperator-nextlink-page"]'; var makers = $U.getNodesFromXPath(xpath, doc); var curPos = win.scrollY; + + // bottom of page + if(curPos == win.scrollMaxY) return 1 + makers.length; + + // return n.5 if between n and n+1 for (let i = 0; i < makers.length; ++i) { let p = $U.getElementPosition(makers[i]); - if (curPos < p.top) break; + if (curPos == p.top) + return page+1; + else if (curPos < p.top) + return page+0.5; ++page; } return page; -- cgit v1.2.3