我是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报告了当前关注的元素(或将接收击键)。



由于诸如spandiv之类的元素通常无法接收击键或集中精力(通过轻击它们),因此它们永远不会成为activeElement。这些标签仅在它们可以接收击键或是“ Activity 的”(例如,将其设置为contenteditable或为其指定tabindex)时才是activeElement。

Demo

09-18 12:56