How to trigger key combo with jQuery

2019-01-09 16:13发布

I have coded some stuff:

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

I zoom in with .css("zoom") but I need the buttons to simulate CTRL + or CTRL -

This code isn't working for me:

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

Please help!

EDIT

I just wont to zoomin and zoomout the hole page

2条回答
我欲成王,谁敢阻挡
2楼-- · 2019-01-09 16:49

jQuery normalizes modifier keys on events by setting one or more properties on the event object. So, you want to set event.ctrlKey to true, so this should work for you:

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

However, as per a comment at source (linked below):

You cannot easily change values in the event object (probably for security reasons).

So, if you're unable to set the event's properties after constructing the Event object, then you can $.extend() it to set the ctrlKey property:

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

One other thing: I'm not sure if you're trying to use key code 50 for the + or the - keys. Maybe you are, and you're using a different keyboard layout, but according to this demo, 50 is the JavaScript key code for hitting 2 - so that could also be part of your problem.


Source: comments on a jQuery API page.


Edit:

All this aside, I don't think you can actually change the browser's zoom level using JavaScript, even if you're "sending" the keyboard command to do so.

Access browser's page zoom controls with javascript

查看更多
孤傲高冷的网名
3楼-- · 2019-01-09 17:03

Source: 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;
    }
});

This is for Ctrl+s, but you should be able to modify it easily.

查看更多
登录 后发表回答