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