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 zoomMode: "fitWidth", // manual / fitWidth
manga: false, // true / false manga: false, // true / false
savePosition: true, // true / false savePosition: true, // true / false
enhance: {} enhance: {},
keyboard: {
next: 78,
previous: 80
}
}; };
var options = merge(defaults, opts); // options array for internal use var options = merge(defaults, opts); // options array for internal use
@ -137,6 +141,7 @@ function ComicBook(id, srcs, opts) {
// add page controls // add page controls
// TODO: add IE event listeners too. // TODO: add IE event listeners too.
canvas.addEventListener("click", ComicBook.prototype.navigation, false); canvas.addEventListener("click", ComicBook.prototype.navigation, false);
window.addEventListener("keydown", ComicBook.prototype.navigation, false);
window.addEventListener("hashchange", checkHash, false); window.addEventListener("hashchange", checkHash, false);
//setInterval(function() { checkHash(); }, 300); // TODO: enable this when there is no onhashchange event //setInterval(function() { checkHash(); }, 300); // TODO: enable this when there is no onhashchange event
} }
@ -455,13 +460,27 @@ function ComicBook(id, srcs, opts) {
}; };
ComicBook.prototype.navigation = function (e) { 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 window.scroll(0,0); // make sure the top of the page is in view
// western style (left to right) // western style (left to right)
if (!options.manga) { if (!options.manga) {
if (side === "left") { ComicBook.prototype.drawPrevPage(); } if (side === "left") { ComicBook.prototype.drawPrevPage(); }
@ -472,6 +491,9 @@ function ComicBook(id, srcs, opts) {
if (side === "left") { ComicBook.prototype.drawNextPage(); } if (side === "left") { ComicBook.prototype.drawNextPage(); }
if (side === "right") { ComicBook.prototype.drawPrevPage(); } if (side === "right") { ComicBook.prototype.drawPrevPage(); }
} }
return false;
} }
}; };
} }