Вызов события нажатия клавиши Escape с помощью jquery

Я хочу сделать свой вопрос ясным. Пожалуйста, не путайте его с определением нажатия клавиши. Я не хочу, чтобы пользователь нажал любую клавишу. Напротив, я хочу запустить script, который запускает событие нажатия клавиши Escape. Пожалуйста, помогите!

Ответ 1

Вы можете использовать $.Event() для создания объекта Event, содержащего событие keydown с ключевым кодом 27 (который должен быть Esc), например:

var esc = $.Event("keydown", { keyCode: 27 });
$("body").trigger(esc); // change body to the element where you'd like to execute the escape key press.

См. эта рабочая демонстрация и docs на jquery.com

Также обратите внимание, что, как заявил Christofer, это может не работать во всех браузерах и средах, поскольку это может считаться теневым поведением, которое может быть использовано вредоносным способом - подобно запуску события click на <a> с внешний href не будет. Я успешно протестировал это (Esc) в Chrome, Safari, Opera, FF и IE9.

Ответ 2

По соображениям безопасности некоторые браузеры (не уверены, что все) не позволяют вам запускать keydown-events. Подробнее см. в этой статье.

Цитата из статьи:

Safari/Chrome делает свойства keyCode и charCode доступными только для чтения, поэтому невозможно имитировать конкретные клавиши при ручной стрельбе события.