代码之家  ›  专栏  ›  技术社区  ›  Alexander_F

如何用jQuery触发键组合

  •  5
  • Alexander_F  · 技术社区  · 16 年前

    我已经把一些东西编码了:

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

    我放大了 .css("zoom") 但我需要按钮来模拟 控制 + 或 控制 -

    这段代码对我不起作用:

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

    请帮忙!

    编辑

    我真的很想 zoom-in 和 zoom-out 整个网页,而不仅仅是一个输入字段。

    2 回复  |  直到 7 年前
        1
  •  10
  •   Community Mohan Dere    9 年前

    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个 是用来点击 2个 -所以这也可能是你问题的一部分。


    资料来源: comments on a jQuery API page .


    编辑:

    撇开这一切,我想你做不到 事实上 使用JavaScript更改浏览器的缩放级别,即使您正在“发送”键盘命令。

    Access browser's page zoom controls with javascript

        2
  •  1
  •   Stephen    16 年前

    资料来源: 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的,但是您应该能够轻松地修改它。