keyboard navigation: left/right

This commit is contained in:
Bala Clark 2011-08-28 20:22:31 +02:00
parent 683d804127
commit 9f684a7b68

View file

@ -48,7 +48,11 @@ function ComicBook(id, srcs, opts) {
zoomMode: "fitWidth", // manual / fitWidth
manga: false, // true / false
savePosition: true, // true / false
enhance: {}
enhance: {},
keyboard: {
next: 78,
previous: 80
}
};
var options = merge(defaults, opts); // options array for internal use
@ -137,6 +141,7 @@ function ComicBook(id, srcs, opts) {
// add page controls
// TODO: add IE event listeners too.
canvas.addEventListener("click", ComicBook.prototype.navigation, false);
window.addEventListener("keydown", ComicBook.prototype.navigation, false);
window.addEventListener("hashchange", checkHash, false);
//setInterval(function() { checkHash(); }, 300); // TODO: enable this when there is no onhashchange event
}
@ -456,9 +461,23 @@ function ComicBook(id, srcs, opts) {
ComicBook.prototype.navigation = function (e) {
if (e.type === "click") {
var side;
var side = getCursorPosition(e);
switch (e.type) {
case "click":
side = getCursorPosition(e);
break;
case "keydown":
if (e.keyCode === options.keyboard.previous) { side = "left"; }
if (e.keyCode === options.keyboard.next) { side = "right"; }
break;
default:
throw "invalid navigation event: " + e.type;
}
if (side) {
e.stopPropagation();
window.scroll(0,0); // make sure the top of the page is in view
@ -472,6 +491,9 @@ function ComicBook(id, srcs, opts) {
if (side === "left") { ComicBook.prototype.drawNextPage(); }
if (side === "right") { ComicBook.prototype.drawPrevPage(); }
}
return false;
}
};
}