Чтение онлайн

ЖАНРЫ

JavaScript. Подробное руководство, 6-е издание
Шрифт:

// Нам необходимо преобразовать идентификатор "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",

83:”S", 84:"Т", 85:"U". 86:"V", 87:"W", 88:"X". 89:"Y", 90:"Z",

//
Цифровые клавиши на дополнительной клавиатуре и клавиши со знаками препинания.

// (Не поддерживаются в Opera.)

96:"О",97:"1",98:"2",99:"3",100:"4",101:"5",102:”6",103:"7",104:"8",

105:"9",106:"Multiply", 107:"Add", 109:"Subtract", 110:"Decimal",

111:"Divide",

// Функциональные клавиши

112:"F1", 113:"F2", 114:"F3", 115:"F4". 116:"F5", 117:"F6",

118:”F7", 119:"F8", 120:"F9", 121:"F10", 122:"F11", 123:"F12",

124:"F13", 125:"F14", 126:"F15", 127:”F16", 128:"F17", 129:"F18",

130:"F19", 131:"F20", 132:"F21”, 133:"F22”, 134:"F23", 135:"F24".

// Клавиши со знаками препинания, для ввода которых не требуется

// удерживать нажатой клавишу Shift.

// Дефис не может использоваться переносимым способом: FF возвращает

// тот же код, что и для клавиши Subtract

59:";”, 61:"=", 186:";", 187:"=", // Firefox и Opera возвращают 59,61

188:",", 190:".", 191:"/", 192: , 219:"[", 220:"\\". 221:"]", 222:"'"

};

18

Работа с протоколом HTTP

Протокол передачи гипертекста (Hypertext Transfer Protocol, HTTP) определяет, как веб-броузеры должны запрашивать документы, как они должны передавать информацию веб-серверам и как веб-серверы должны отвечать на эти запросы и передачи. Очевидно, что веб-броузеры очень много работают с протоколом HTTP. Тем не менее, как правило, сценарии не работают с протоколом HTTP, когда пользователь щелкает на ссылке, отправляет форму или вводит URL в адресной строке.

Однако JavaScript-код способен работать с протоколом HTTP. HTTP-запросы могут инициироваться, когда сценарий устанавливает значение свойства

location
объекта
Window
или вызывает метод
submit
объекта
Form
. В обоих случаях броузер загружает в окно новую страницу. Такого рода взаимодействие с протоколом HTTP может быть вполне оправданным в веб-страницах, состоящих из нескольких фреймов, но в этой главе мы будем говорить совсем о другом. Здесь мы рассмотрим такое взаимодействие JavaScript-кода с веб-сервером, при котором веб-броузер не перезагружает содержимое окна или фрейма.

Поделиться с друзьями: