1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-02-27 20:43:56 +00:00
scrapy/sites/static.scrapy.org/js/keyboard_nav.js

62 lines
1.5 KiB
JavaScript
Raw Normal View History

(function($){
var SELECTED_FILE_ELEM = null;
var ENABLE_KEY_NAV = true;
$(document).keydown(function(event) {
if (!ENABLE_KEY_NAV)
return true;
var selection = SELECTED_FILE_ELEM;
switch (event.keyCode) {
case 74: // j
if (selection == null) {
selection = $('#f0');
} else {
do {
selection = selection.next();
} while (selection.length > 0 && selection.css('display') == 'none');
}
break;
case 75: // k
if (selection == null) {
selection = $('#f0');
} else {
do {
selection = selection.prev();
} while (selection.length > 0 && selection.css('display') == 'none');
}
break;
case 13: // Enter
case 79: // o
if (selection != null) {
var expander = selection.find('.expander');
if (expander.length > 0) {
expander.click();
} else {
window.location = selection.find('a.file').attr('href');
}
}
return false;
break;
default:
return true;
}
if (selection.length > 0) {
if (SELECTED_FILE_ELEM != null)
SELECTED_FILE_ELEM.removeClass('focus');
selection.addClass('focus');
SELECTED_FILE_ELEM = selection;
}
return false;
});
$(function() {
$('a,input,select,textarea,button')
.focus(function(event) {
ENABLE_KEY_NAV = false;
})
.blur(function(event) {
ENABLE_KEY_NAV = true;
});
});
})(jQuery);