2010-10-08 2 views
3

Я закодированы некоторые вещи:Как вызвать комбинацию клавиш с JQuery

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

I увеличить масштаб с .css ("зум"), но мне нужны кнопки, чтобы имитировать CTRL + или CTRL -

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

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

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

EDIT

Я просто обыкновение ZoomIn и ZoomOut страницу с луночное

ответ

8

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 для + или - ключей. Возможно, вы есть, и вы используете другую раскладку клавиатуры, но согласно this demo, 50 является кодом кода JavaScript для удара - так что это также может быть частью вашей проблемы.


Источник: comments on a jQuery API page.


Edit:

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

Access browser's page zoom controls with javascript

+0

Благодарим вас за ответ, вы правы, нет способа встретить такую ​​горячую клавишу –

1

Источник: 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, но вы должны быть в состоянии изменить его легко.

+1

это не то, что я не буду. Мне нужно смоделировать CTRL +, нажав на ссылку –

+0

Oh! Извините, я неправильно понял вопрос! – Stephen

+0

Я понимаю, что это был не очень хороший ответ для OP, но мне нужно было точное решение для моей собственной проблемы, поэтому спасибо! –