How to trigger key combo with jQuery

后端 未结 2 1352
难免孤独
难免孤独 2020-11-30 14:19

I have coded some stuff:

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

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

相关标签:
2条回答
  • 2020-11-30 14:48

    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.

    0 讨论(0)
  • 2020-11-30 14:54

    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

    0 讨论(0)
提交回复
热议问题