/*** BEGIN LICENSE BLOCK {{{ Copyright (c) 2009 hogelog Released under the GPL license http://www.gnu.org/copyleft/gpl.html }}} END LICENSE BLOCK ***/ // PLUGIN_INFO//{{{ var PLUGIN_INFO = {NAME} marker PageDown/PageUp. hogelog 0.0.1 GPL 2.1pre 2.1pre http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/marker_reader.js ; //}}} (function() { const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; let libly = liberator.plugins.libly; let $U = libly.$U; let pageNaviCss = ; function insertMarkers(doc) { let win = doc.defaultView; doc.naviMarker = true; let css = $U.xmlToDom(pageNaviCss, doc); let node = doc.importNode(css, true); doc.body.insertBefore(node, doc.body.firstChild); let scroll_ratio = parseFloat(liberator.globalVariables.marker_reader_scroll_ratio) || 0.7; let scroll = win.innerHeight * scroll_ratio; let count = Math.ceil(win.scrollMaxY / scroll); for (let pageNum=1;pageNum<=count+1;++pageNum) { let p = doc.createElementNS(HTML_NAMESPACE, "p"); let id = "vimperator-marker_reader-" + pageNum; p.id = id; p.innerHTML = '' + pageNum + ""; p.className = "vimperator-marker_reader-marker"; p.style.left = 0; p.style.top = (pageNum-1)*scroll; p.style.zIndex = 1000; doc.body.appendChild(p); } } function removeMarkers(doc) { let xpath = '//*[@class="vimperator-marker_reader-marker"]'; let markers = $U.getNodesFromXPath(xpath, doc); for (let i=0,len=markers.length;i= win.scrollMaxY) { if (markers.length > 0) { let lastMarker = Math.round(parseFloat(markers[markers.length-1].style.top)); if (curPos <= lastMarker) return markers.length; } return markers.length + 0.5; } // return n.5 if between n and n+1 var page = 1.0; for (let i=0,len=markers.length;i