diff options
author | hogelog | 2009-05-31 15:49:06 +0000 |
---|---|---|
committer | hogelog | 2009-05-31 15:49:06 +0000 |
commit | f387a770c6af5e73be747e5d5efba7385e98227a (patch) | |
tree | 0ccbd7ac0f2d36c806c2e750239447fcadb54ee2 | |
parent | fd6633cd22ed7045d10d5ec782336ed3b7620ad6 (diff) | |
download | vimperator-plugins-f387a770c6af5e73be747e5d5efba7385e98227a.tar.bz2 |
* remove page top marker.
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@33688 d0d07461-0603-4401-acd4-de1884942a52
-rw-r--r-- | marker_reader.js | 83 |
1 files changed, 51 insertions, 32 deletions
diff --git a/marker_reader.js b/marker_reader.js index 16bc094..ffe3c13 100644 --- a/marker_reader.js +++ b/marker_reader.js @@ -10,7 +10,7 @@ var PLUGIN_INFO = <name>{NAME}</name> <description>marker PageDown/PageUp.</description> <author mail="konbu.komuro@gmail.com" homepage="http://d.hatena.ne.jp/hogelog/">hogelog</author> - <version>0.0.13</version> + <version>0.0.14</version> <license>GPL</license> <minVersion>2.1pre</minVersion> <maxVersion>2.1pre</maxVersion> @@ -59,7 +59,8 @@ let ignorePages = liberator.globalVariables.marker_reader_ignore || /^http:\/\/(?:reader\.livedoor|fastladder)\.com\/(?:reader|public)\//]; function near(p1, p2, e) p1-e <= p2 && p2 <= p1+e; -function focusDocument(win) { +function focusDocument(win) +{ let frames = win.frames; if (!frames) return win.document; for (let i=0,len=win.frames.length;i<len;++i) { @@ -68,6 +69,29 @@ function focusDocument(win) { } return win.document; } +function autoInsert(win) +{ + let uri = win.location.href; + if (ignorePages.some(function(r) r.test(uri))) return; + let doc = win.document; + if (!(doc instanceof HTMLDocument)) return; + if (doc.contentType != "text/html") return; + + reader.removeMarkers(doc); + reader.insertMarkers(doc); + + let frames = win.frames; for (let i=0,len=frames.length;i<len;++i) autoInsert(frames[i]); +} +function onResize(event) +{ + let win = event.target; + autoInsert(win); +} +function onLoad(event) +{ + let win = (event.target.contentDocument||event.target).defaultView; + autoInsert(win); +} var reader = { pageNaviCss: @@ -87,8 +111,10 @@ var reader = { // insertMarkers have to act synchronized function insertMarkers: function(doc) { + // this operation have to atomic { if (doc.markers) return false; doc.markers = []; + // } let win = doc.defaultView; @@ -104,7 +130,7 @@ var reader = { let scroll = win.innerHeight * scroll_ratio; let count = Math.ceil(win.scrollMaxY / scroll); - for (let pageNum=1;pageNum<=count+1;++pageNum) + for (let pageNum=2;pageNum<=count+1;++pageNum) { let p = doc.createElementNS(HTML_NAMESPACE, "p"); let id = "vimperator-marker_reader-" + pageNum; @@ -112,6 +138,7 @@ var reader = { if (liberator.globalVariables.marker_reader_pagelink) { p.innerHTML = '<a href="#' + id + '">' + pageNum + "</a>"; } else { + p.setAttribute("mousethrough", "always"); //p.innerHTML = ""; } p.className = "vimperator-marker_reader-marker"; @@ -126,14 +153,22 @@ var reader = { // removeMarkers have to act synchronized function removeMarkers: function(doc) { + // this operation have to atomic { let markers = doc.markers; if (!markers) return false; doc.markers = null; + // } for (let i=0,len=markers.length;i<len;++i) { doc.body.removeChild(markers[i]); } + let win = doc.defaultView; + let frames = win.frames; + if (frames) { + for (let i=0,len=frames.length;i<len;++i) + if (!reader.removeMarkers(frames[i].document)) return false; + } return true; }, currentPage: function(doc) @@ -161,7 +196,7 @@ var reader = { } // return n.5 if between n and n+1 - let page = 1.0; + let page = 2.0; for (let i=0,len=markers.length;i<len;++i) { let pos = parseInt(markers[i].offsetTop); @@ -199,6 +234,16 @@ var reader = { win.scrollTo(win.scrollX, win.scrollMaxY); return true; }, + setAutoInsert: function(set) + { + if (!set) { + window.removeEventListener("resize", onResize, true); + gBrowser.removeEventListener("load", onLoad, true); + } else { + window.addEventListener("resize", onResize, true); + gBrowser.addEventListener("load", onLoad, true); + } + }, }; if (liberator.globalVariables.marker_reader_mapping) { @@ -239,34 +284,8 @@ commands.addUserCommand(["markerprev", "mprev"], "marker PageUp", reader.focusNavi(focusDocument(content), -1); }); -if (liberator.globalVariables.marker_reader_onload !== 0) { - function autoInsert(win) - { - //if (win.frameElement) return; - let uri = win.location.href; - if (ignorePages.some(function(r) r.test(uri))) return; - let doc = win.document; - if (!(doc instanceof HTMLDocument)) return; - if (doc.contentType != "text/html") return; - - reader.removeMarkers(doc); - reader.insertMarkers(doc); - - let frames = win.frames; - for (let i=0,len=frames.length;i<len;++i) autoInsert(frames[i]); - } - function onResize(event) - { - let win = event.target; - autoInsert(win); - } - function onLoad(event) - { - let win = (event.target.contentDocument||event.target).defaultView; - autoInsert(win); - } - window.addEventListener("resize", onResize, true); - gBrowser.addEventListener("load", onLoad, true); +if (liberator.globalVariables.marker_reader_onload) { + reader.setAutoInsert(true); } return reader; |