JavaScript. Подробное руководство, 6-е издание
Шрифт:
// Если имя клавиши не удалось определить, просто проигнорировать событие
// и вернуть управление,
if (!keyname) return;
// Канонический идентификатор клавиши состоит из имен модификаторов
// и имени клавиши в нижнем регистре
var keyid = modifiers + keyname.toLowerCase;
//
Проверить, имеется ли привязка для данного идентификатора клавиши
var handler = this.map[keyid];
if (handler) { // Если обработчик для данной клавиши, вызвать его
// Вызвать функцию-обработчик
var retval = handler.call(element, event, keyid);
// Если обработчик вернул false, отменить действия по умолчанию
// и прервать всплытие события
if (retval === false) {
if (event.stopPropagation)
event.stopPropagation; // модель DOM
else
event.cancelBubble = true; // модель IE
if (event.preventDefault)
event.preventDefault; // DOM
else
event.returnValue = false; // IE
}
// Вернуть значение, полученное от обработчика
return retval;
}
};
// Вспомогательная функция преобразования идентификатора клавиши в каноническую форму.
// Нам необходимо преобразовать идентификатор "meta” в "Ctrl", чтобы превратить
// идентификатор Meta-C в "Command-C" на компьютерах Маc и в "Ctrl-C" на всех остальных.
Keymap.normalize = function(keyid) {
keyid = keyid.toLowerCaseO; // В нижний регистр
var words = keyid.split(/\s+|[\-+_]/); // Вычленить модификаторы
var keyname = words.pop; // keyname -
последнее слово
keyname = Keymap.aliases[keyname] || keyname; // Это псевдоним?
words.sort; // Сортировать модификаторы
words.push(keyname); // Поместить обратно
// нормализованное имя
return words.join// Объединить все вместе
};
Keymap.aliases = { // Отображение привычных псевдонимов клавиш в их
"escape":"esc", // "официальные" имена, используемые в DOM Level 3,
"delete":"del", // и отображение кодов клавиш в имена ниже.
"return”:"enter", // Имя и значение должны состоять только из символов
"Ctrl":"control", // нижнего регистра.
"space":"spacebar",
"ins":"insert"
};
// Старое свойство keyCode объекта события keydown не стандартизовано
// Но следующие значения с успехом могут использоваться в большинстве броузеров и ОС.
Keymap.keyCodeToKeyName = {
// Клавиши со словами или стрелками на них
8:"Backspace", 9:"Tab", 13:"Enter", 16:"Shift", 17:"Control". 18:"Alt",
19:"Pause”, 20:"CapsLock", 27:"Esc", 32:"Spacebar", 33:"PageUp",
34:"PageDown", 35:"End", 36:"Home", 37:"Left", 38:"Up", 39:"Right",
40:"Down", 45:"Insert", 46:"Del",
// Цифровые клавиши на основной клавиатуре (не на дополнительной)
48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9".
// Буквенные клавиши. Обратите внимание, что здесь не различаются
// символы верхнего и нижнего регистров
65:"А", 66:"В", 67:"С". 68:"D". 69:"Е". 70:"F", 71:"G", 72:"Н". 73:"I",
74:"J", 75:"К", 76:"L”, 77:"М", 78:"N". 79:"О". 80:"Р", 81:"Q". 82:"R",
Поделиться:
Популярные книги
Метатель
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
4.80
рейтинг книги
Доктор. Заново
1. Доктор
Фантастика:
фэнтези
альтернативная история
5.86
рейтинг книги
Имперец. Том 4
3. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Смерч войны
1. Историческая библиотека
Проза:
военная проза
5.00
рейтинг книги
Справочник по лечению зависимостей
Справочная литература:
путеводители
5.00
рейтинг книги
Потомок бога 3
3. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Универсальный энциклопедический справочник
Справочная литература:
справочники
энциклопедии
5.00
рейтинг книги
Неизвестные страницы истории российского флота
Научно-образовательная:
история
военное дело: прочее
военная история
5.00
рейтинг книги
Избрание сочинения в трех томах. Том второй
Проза:
советская классическая проза
5.00
рейтинг книги
Полная история государства Российского в одном томе
Научно-образовательная:
история
5.00
рейтинг книги
Место под солнцем
Анника Бенгтзон
Детективы:
криминальные детективы
6.00
рейтинг книги
Очерки времен и событий из истории российских евреев. 1945 – 1970 гг. Книга 6
Научно-образовательная:
история
5.00
рейтинг книги
Гвардия. (Дилогия)
65. В одном томе
Фантастика:
научная фантастика
8.57
рейтинг книги
Глаза ночи
Любовные романы:
любовно-фантастические романы
эро литература
5.88