我是JavaScript的新手。以下是我的代码。点击按钮后,我理解为什么event.target返回对象(因为那是我点击的最内层元素。正确吗?)。我的疑问是,按照同样的逻辑,为什么document.activeElement返回对象而不是对象呢?当我点击时,难道不应该是元素处于活动状态吗?感谢您提前澄清:)<!DOCTYPE html> <head> <script type="text/javascript"> function GetActive () { if (document.activeElement) { var output = document.getElementById ("output"); output.innerHTML = document.activeElement + ’-’ + event.target } } </script> </head> <body onclick="GetActive ();"> Click anywhere on the page to get the active element <input id="myInput" value="input field" /> <button> <span>Sample button</span> </button> <div id="output"></div> </body>
这是因为document.activeElement会返回当前获得焦点的元素(或将接收按键事件的元素)。 返回当前获得焦点的元素,也就是说如果用户输入任何内容,该元素将接收到按键事件。该属性只读。 由于span和div等元素通常不能接收按键事件或获得焦点(通过Tab),它们永远不会成为activeElement。只有当它们可以接收按键事件或处于“活动”状态时,例如当您将它们设置为contenteditable或赋予它们tabindex时,它们才成为activeElement。 演示
event.target
是button
而不是span
,这很好。这是因为span
标签没有“覆盖”整个button
。 - bart s