简体   繁体   English

如何在JavaScript中触发键盘快捷键功能?

[英]How to fire a keyboard shortcut function in JavaScript?

I have a record functionality in my website. 我的网站上有录音功能。 If a user hits Ctrl + Alt + R the recording will begin. 如果用户按Ctrl + Alt + R ,则会开始录制。 Now I would like a button named RECORD in my html page, so that when a user hits that button recording will start. 现在,我想在我的html页面中找到一个名为RECORD的按钮,以便当用户单击该按钮时,将开始记录。

<button type="submit" class="btn btn-primary" data-toggle="tooltip" data-placement="top" onclick="record_session()" title="Start Recording">Record</button>

in my function below 在下面的功能中

function record_session(){
    //how can i trigger or initiate  ctrl+alt+r here??
}

If you use jQuery you can add keypress event: 如果您使用jQuery,则可以添加keypress事件:

$(document).keypress(function(e) {
    if (e.which === 114 && e.ctrlKey && e.altKey) {
        record_session();
    }
});

UPDATE : 更新

var enable_keypress = false;
function record_session(){
    enable_keypress = true;
}
$(document).keypress(function(e) {
    if (enable_keypress) {
        if (e.which === 114 && e.ctrlKey && e.altKey) { // ctrl+alt+r

        }
    }
});

UPDATE 2 更新2

to fire keyboard event you can use this: 触发键盘事件,您可以使用以下命令:

jQuery: jQuery的:

function keydown(ctrl, alt, shift, which, key) {
    var e = $.Event("keydown");
    e.ctrlKey = ctrl;
    e.altKey = alt;
    e.shiftKey = shift;
    if (typeof which === 'string') {
        key = which;
        which = key.toUpperCase().charCodeAt(0);
    }
    e.key = key;
    e.which = e.keyCode = which;
    return e;
}
function keypress(key) {
    var e = $.Event("keypress");
    e.key = key;
    e.which = e.keyCode = 0;
    return e;
}
function shortcut({
    ctrl = false,
    alt = false,
    shift = false,
    which,
    key
}) {
    var doc = $(document.documentElement || window);
    if (typeof which === 'string') {
        key = which;
        which = key.toUpperCase().charCodeAt(0);
    }
    doc.trigger(keydown(ctrl, alt, shift, which, key));
    doc.trigger(keypress(key));
}

you can use shortcut to trigger both keydown and keypress: 您可以使用快捷方式来触发按下和按下按键:

shortcut({ctrl: true, alt: true, which: 'r'});

in case you have listener that do different things (I have this in my tests for jQuery Terminal); 如果您有监听器做不同的事情(我在jQuery Terminal的测试中有这个功能);

Native code: 本机代码:

 function shortcut({chr, ctrlKey = false, altKey = false}) {
     var lowerChr = chr.toLowerCase();
     var upperChr = chr.toUpperCase();
     var keydownCode = upperChr.charCodeAt(0);
     var e = new KeyboardEvent("keydown", {
         key: lowerChr,
         code: "Key" + upperChr,
         ctrlKey,
         altKey,
         keyCode: keydownCode,
         which: keydownCode
     });
     var keypressCode = lowerChr.charCodeAt(0);
     document.documentElement.dispatchEvent(e);
     var e = new KeyboardEvent("keypress", {
         key: lowerChr,
         ctrlKey,
         altKey,
         charCode: keypressCode,
         keyCode: keypressCode,
         which: keypressCode
     });
     document.documentElement.dispatchEvent(e);
 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM