Как вызвать комбинацию клавиш с помощью jQuery - PullRequest
5 голосов
/ 08 октября 2010

Я закодировал некоторые вещи:

http://fincha.com/kunden/schmitt/

Я увеличиваю с .css("zoom"), но мне нужны кнопки для имитации CTRL + или CTRL -

Этот код не работает для меня:

e = jQuery.Event("keydown");        
e.which = 50;       
$("input").trigger(e);

Пожалуйста, помогите!

РЕДАКТИРОВАТЬ

Я действительно хотел zoom-in и zoom-out всю веб-страницу, а не только поле ввода.

Ответы [ 2 ]

10 голосов
/ 09 октября 2010

jQuery нормализует клавиши-модификаторы событий, устанавливая одно или несколько свойств объекта event.Итак, вы хотите установить event.ctrlKey на true, так что это должно работать для вас:

e = jQuery.Event("keydown");        
e.which = 50;
e.ctrlKey = true;
$("input").trigger(e);

Однако, согласно комментарию в источнике (ссылка ниже):

Вы не можете легко изменить значения в объекте события (возможно, по соображениям безопасности).

Итак, если вы не можете установить свойства события после построения Event объект, тогда вы можете $.extend() установить его для свойства ctrlKey:

e = jQuery.Event("keydown");
fake = $.extend({}, e, {which: 50, ctrlKey: true});
$("input").trigger(fake);

Еще одна вещь: я не уверен, что вы пытаетесь использовать код ключа 50 для клавиш + или - .Может быть, вы и используете другую раскладку клавиатуры, но согласно эта демонстрация , 50 - это код клавиши JavaScript для нажатия 2 - так что это также может быть частьювашей проблемы.


Источник: комментарии на странице API jQuery .


Редактировать:

Помимо всего этого, я не думаю, что вы можете на самом деле изменить уровень масштабирования браузера с помощью JavaScript, даже если вы "посылаете" команду клавиатуры для этого.

Доступ к элементам управления масштабированием страницы браузера с помощью JavaScript

1 голос
/ 08 октября 2010

Источник: http://www.scottklarr.com/topic/126/how-to-create-ctrl-key-shortcuts-in-javascript/

var isCtrl = false;

$(document).keyup(function (e) {
    if(e.which == 17) isCtrl=false;
}).keydown(function (e) {
    if(e.which == 17) isCtrl=true;
    if(e.which == 83 && isCtrl == true) {
        //run code for CTRL+S -- ie, save!
        return false;
    }
});

Это для Ctrl + s, но вы можете легко его изменить.

...