我是JavaScript的新手。这是我的以下代码。
单击按钮后,我了解了event.target为什么返回,跨度对象(因为这是我单击的最里面的元素。对吗?)。
我的疑问是,按照相同的逻辑,为什么document.activeElement返回按钮对象而不是 span 对象?当我单击按钮时,是否应该激活 span 元素?
预先感谢您的澄清:=)
<!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
之类的元素通常无法接收击键或集中精力(通过轻击它们),因此它们永远不会成为activeElement
。这些标签仅在它们可以接收击键或是“ Activity 的”(例如,将其设置为contenteditable
或为其指定tabindex
)时才是activeElement。
Demo