如何使用 jQuery 触发组合键

IT技术 javascript jquery keydown
2021-02-27 08:22:41

我已经编码了一些东西:

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

我放大.css("zoom")但我需要按钮来模拟CTRL +CTRL -

此代码对我不起作用:

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

请帮忙!

编辑

我实际上想要zoom-inzoom-out整个网页,而不仅仅是一个输入字段。

2个回答

jQuery 通过在event对象上设置一个或多个属性来规范化事件上的修饰键所以,你想设置event.ctrlKeytrue,所以这应该适合你:

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用于+-密钥。也许您是,并且您正在使用不同的键盘布局,但根据此演示50是用于点击的 JavaScript 键代码2- 因此这也可能是您的问题的一部分。


来源:jQuery API 页面上的评论


编辑:

撇开所有这些不谈,我认为您实际上无法使用 JavaScript 更改浏览器的缩放级别,即使您“发送”了键盘命令来这样做。

使用 javascript 访问浏览器的页面缩放控件

谢谢你的回应,你说得对,没有办法面对这样的热键
2021-04-21 08:22:41

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

你不能使用target="_blank"然后简单地点击它吗?
2021-04-27 08:22:41
这不是我不会的。我需要通过单击链接来模拟 CTRL +
2021-05-04 08:22:41
我意识到这对 OP 来说不是一个好的答案,但我需要针对我自己的问题的确切解决方案,所以谢谢!
2021-05-13 08:22:41
哦!对不起,我误解了这个问题!
2021-05-20 08:22:41