Browse Source

Using native HTML hyperlinks for bookmark/link navigation

notmasteryet 14 years ago
parent
commit
0e14a2fb28
  1. 16
      web/viewer.css
  2. 47
      web/viewer.js

16
web/viewer.css

@ -20,6 +20,7 @@ body {
top: 0px; top: 0px;
height: 40px; height: 40px;
width: 100%; width: 100%;
z-index: 1;
} }
.separator { .separator {
@ -67,6 +68,7 @@ span#info {
transition: left 0.25s ease-in-out 1s; transition: left 0.25s ease-in-out 1s;
-moz-transition: left 0.25s ease-in-out 1s; -moz-transition: left 0.25s ease-in-out 1s;
-webkit-transition: left 0.25s ease-in-out 1s; -webkit-transition: left 0.25s ease-in-out 1s;
z-index: 1;
} }
#sidebar:hover { #sidebar:hover {
@ -180,6 +182,20 @@ canvas {
width: 816px; width: 816px;
height: 1056px; height: 1056px;
margin: 10px auto; margin: 10px auto;
position:relative;
}
.page > a {
display: block;
position: absolute;
}
.page > a:hover {
opacity: 0.2;
background: #ff0;
box-shadow: 0px 2px 10px #ff0;
-moz-box-shadow: 0px 2px 10px #ff0;
-webkit-box-shadow: 0px 2px 10px #ff0;
} }
#viewer { #viewer {

47
web/viewer.js

@ -212,39 +212,24 @@ var PageView = function(container, content, id, width, height,
}; };
function setupLinks(canvas, content, scale) { function setupLinks(canvas, content, scale) {
var links = content.getLinks(); function bindLink(link, dest) {
var currentLink = null; if (dest) {
if (links.length > 0) { link.onclick = function() {
canvas.addEventListener('mousemove', function(e) { PDFView.navigateTo(dest);
var x = e.pageX; return false;
var y = e.pageY; };
for (var p = canvas; p; p = p.offsetParent) {
x -= p.offsetLeft;
y -= p.offsetTop;
}
x /= scale;
y /= scale;
var i, n = links.length;
for (i = 0; i < n; i++) {
var link = links[i];
if (link.x <= x && link.y <= y &&
x < link.x + link.width && y < link.y + link.height) {
currentLink = link;
canvas.style.cursor = 'pointer';
return;
} }
} }
currentLink = null; var links = content.getLinks();
canvas.style.cursor = 'default'; for (var i = 0; i < links.length; i++) {
}, false); var link = document.createElement('a');
canvas.addEventListener('mousedown', function(e) { link.style.left = Math.floor(links[i].x * scale) + 'px';
if (!currentLink) link.style.top = Math.floor(links[i].y * scale) + 'px';
return; link.style.width = Math.ceil(links[i].width * scale) + 'px';
if (currentLink.url) link.style.height = Math.ceil(links[i].height * scale) + 'px';
window.location.href = currentLink.url; link.href = links[i].url || '';
if (currentLink.dest) bindLink(link, links[i].dest);
navigateTo(currentLink.dest); div.appendChild(link);
}, false);
} }
} }

Loading…
Cancel
Save