Skip to content

Instantly share code, notes, and snippets.

@onozaty
Last active August 29, 2015 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save onozaty/2e4f2df76b7ff36f743b to your computer and use it in GitHub Desktop.
Save onozaty/2e4f2df76b7ff36f743b to your computer and use it in GitHub Desktop.
elements scroll by jk shortcut
function registerJumpElements(elements) {
var KEYCODE_J = 74;
var KEYCODE_K = 75;
var targetElements = elements;
var currentIndex = -1;
var scollElement = function(event) {
if (event.keyCode != KEYCODE_J && event.keyCode != KEYCODE_K) {
return;
}
// 次の位置を計算
var nextIndex =
currentIndex + ((event.keyCode == KEYCODE_J) ? 1 : -1);
if (nextIndex < 0) {
nextIndex = 0;
} else if (nextIndex >= targetElements.length) {
nextIndex = targetElements.length - 1;
}
// 要素が表示されるようにスクロール
targetElements[nextIndex].scrollIntoView();
currentIndex = nextIndex;
}
if (document.addEventListener) {
document.addEventListener(
'keydown', scollElement, false);
} else {
// IE8など
document.attachEvent(
'onkeydown', scollElement);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment