Javascript 键盘事件目标元素

Javascript 键盘事件目标元素,javascript,Javascript,在处理键盘事件时,我意识到并非所有元素都能获得事件目标。例如,当向没有键盘焦点的元素(“p”元素)添加处理程序时(如下面所示),当我按下键盘时,当然不会发生任何事情 但是,如果我将整个文档的“p”元素更改为添加键盘事件(比如将代码更改为document.keydown=myFunction;),那么代码运行良好。正如我在某个地方读到的,这是因为键盘事件发生在文档中的某个地方,然后切换到文档元素。那个么你们能告诉我这个事件发生在文档中的什么地方吗? 代码如下: <!DOCTYPE html&

在处理键盘事件时,我意识到并非所有元素都能获得事件目标。例如,当向没有键盘焦点的元素(“p”元素)添加处理程序时(如下面所示),当我按下键盘时,当然不会发生任何事情

但是,如果我将整个文档的“p”元素更改为添加键盘事件(比如将代码更改为document.keydown=myFunction;),那么代码运行良好。正如我在某个地方读到的,这是因为键盘事件发生在文档中的某个地方,然后切换到文档元素。那个么你们能告诉我这个事件发生在文档中的什么地方吗? 代码如下:

<!DOCTYPE html>
<html>
<head>
</head>
<body>    
<p id = 'myId'>Some Text</p>

<script>

function myFunction(e)
{
var x=e.keyCode;
var keychar=String.fromCharCode(x);
alert("Key " + keychar + " was pressed down");
}
var myEl = document.getElementById('myId');
myEl.onkeydown = myFunction;

</script>
</body>
</html>

一些文本

函数myFunction(e) { var x=e.keyCode; var keychar=String.fromCharCode(x); 警报(“按下键“+keychar+”); } var myEl=document.getElementById('myId'); myEl.onkeydown=myFunction;

谢谢大家!

我不确定您的确切问题是什么,但如果您想找出原始元素,请使用
e.target

function myFunction(e) {
  var x=e.keyCode;
  var keychar=String.fromCharCode(x);
  alert("Key " + keychar + " was pressed down");
  alert("Target: " + e.target);
}

document.onkeydown = myFunction;

检查当前的小提琴,尝试在输入框中输入一些东西。您将看到输入的目标更改

我不确定您的确切问题是什么,但如果您想找出原始元素,请使用
e.target

function myFunction(e) {
  var x=e.keyCode;
  var keychar=String.fromCharCode(x);
  alert("Key " + keychar + " was pressed down");
  alert("Target: " + e.target);
}

document.onkeydown = myFunction;

检查当前的小提琴,尝试在输入框中输入一些东西。您将看到输入的目标更改

向document元素添加onkeydown事件处理程序的事实并不一定表明事件正在向document元素冒泡

基本上,该指令告诉浏览器的是“当用户查看此页面时,使用此功能响应任何按键事件”


如果您在文档中有一个文本输入并输入到该输入中,那么您的处理程序仍然会以相同的方式作出反应,然后可以说事件从该元素通过任何包含元素冒泡,一直到文档级别。但是,如果没有这样一个元素(即打算对关键输入事件作出反应的元素),则您的keydown事件将发生在文档的级别,而不是下面

向document元素添加onkeydown事件处理程序的事实并不一定表明事件正在向document元素冒泡

基本上,该指令告诉浏览器的是“当用户查看此页面时,使用此功能响应任何按键事件”

如果您在文档中有一个文本输入并输入到该输入中,那么您的处理程序仍然会以相同的方式作出反应,然后可以说事件从该元素通过任何包含元素冒泡,一直到文档级别。但是,如果没有这样一个元素(即打算对关键输入事件作出反应的元素),则您的keydown事件将发生在文档的级别,而不是下面