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",
Поделиться:
Популярные книги
Тринадцатый IV
4. Видящий смерть
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Господин из завтра. Тетралогия.
Фантастика:
альтернативная история
8.32
рейтинг книги
Газлайтер. Том 29
29. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
История западной философии
Пути философии
Научно-образовательная:
история
философия
культурология
5.00
рейтинг книги
Воин-Врач
1. Воин-Врач
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
6.00
рейтинг книги
Борьба за трон
Приключения:
исторические приключения
5.00
рейтинг книги
Бастард Императора. Том 8
8. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Князь Целитель 3
3. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Матабар III
3. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Инженер Петра Великого
1. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Украсть у президента
Детективы:
триллеры
5.00
рейтинг книги
Эфемер
7. Стеллар
Фантастика:
боевая фантастика
рпг
7.23
рейтинг книги
Менталист. Трансформация
4. Выиграть у времени
Фантастика:
фэнтези
альтернативная история
7.28
рейтинг книги
Двойник короля 18
18. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00