javascript – 处理鼠标点击和keydown或按键事件(非修饰键)的事件

我是JS的新手,并试图自己学习 – 感谢您的帮助!

我试图让一个简单的程序以不同的方式响应点击,具体取决于鼠标点击时按下的其他键.

我已经搜索了很多,并且无法找到适用于非修改键alt和shift的答案(我没有遇到任何麻烦).但是,我不能为我的生活弄清楚如何用常规字符键实现相同的结果.

如果使用alt键,则The example below (which I found in other comments on this site)有效.

<div id="targetDiv">I want to put a ding in the universe.</div>

$(function() {
  $("#targetDiv").click(function(event) {
    if (event.altKey) {
       //do something, alt was down when clicked
    }
  });
});

但是,直观的修改不起作用.

例如,当按下’r’键时,其他相同的代码(现在使用event.keyCode === 114)不起作用(?!)(event.charCode === 114也不行):

 <div id="targetDiv">I want to put a ding in the universe.</div>
    $(function() {
          $("#targetDiv").click(function(event) {
            if (event.keyCode===114) {
               //do something, alt was down when clicked
            }
          });
        });

什么地方出了错?

如果我单独听它,我可以从keyPress中获取功能:

addEventListener("keypress", rIsPressed, false);

function rIsPressed(event){
    if(event.keyCode===114){    
    console.log("the 'r' key is pressed");
    }
}

但是,当我尝试将一个字符按键与鼠标点击配对,或者甚至是一个带有修饰键按键的字符按键时,似乎没有任何效果:

addEventListener("keypress", rIsPressed, false);

function rIsPressed(event){
    if((event.keyCode===114) && (event.altKey)){    
    console.log("the 'alt' and 'r' keys are pressed");
    }
}

注意:我在所有这些示例中都尝试过keydown而不是keypress,但没有成功.

请注意我缺少或忽略的内容 – 将字符键配对/按下修改键或鼠标点击有什么问题!

谢谢!!

解决方法:

正如我上面评论的那样,click事件没有名为keyCode的属性,因此无法使用event.keyCode.控制和alt工作的唯一原因是因为它们是click事件的属性,event.ctrlKey和event.altKey.你可以更有创意,并使用这样的东西,虽然我真的不知道你需要什么:

var currKey = null;

$("#targetDiv").click(function (event) {
    if (currKey != null) {
        $("#targetDiv").text(currKey);
    }
});
$(window).keydown(function (event) {
    currKey = event.which;
});
$(window).keyup(function (event) {
    currKey = null;
});

这会在触发keydown时存储密钥代码,当触发keyup时它会清除var.只有当var显示除null之外的其他内容时,才允许运行click事件中的内容.

上一篇:[WebRTC] Audio Codec Encoder 基类注解


下一篇:Android 程序员的技术栈大全,已整理成文档