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",
Поделиться:
Популярные книги
Диверсант
2. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Старый, но крепкий 5
5. Культивация без насилия
Фантастика:
рпг
аниме
уся
фэнтези
5.00
рейтинг книги
Чужак из ниоткуда
1. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж 2
6. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Изгой Проклятого Клана
1. Изгой
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Двойник Короля
1. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Цикл "Отмороженный". Компиляция. Книги 1-14
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Сержант. Назад в СССР. Книга 4
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Газлайтер. Том 20
20. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Запасная дочь
Фантастика:
фэнтези
6.40
рейтинг книги
Газлайтер. Том 10
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Азеф
Проза:
историческая проза
6.00
рейтинг книги
Поход
4. Ермак
Фантастика:
боевая фантастика
альтернативная история
6.25
рейтинг книги
За Горизонтом
8. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00