文档对象的activeElement属性设置具有键盘焦点的当前元素。
但是我看到奇怪的行为:
如果我将鼠标悬停在图像/ anchor 上,activeElement将显示
<body>
如果我右键单击 anchor ,则显示activeElement
<a href=....
如果我右键单击图像,则显示activeElement
<body>
有人可以请exaplain正确的举止吗?
我正在使用Firefox。
console.log(document.activeElement);
最佳答案
只有“focusable”的元素可以具有焦点。与链接或文本区域不同,对于图像元素,“焦点”在很大程度上(具有讽刺意味的)是毫无意义的,因此规范未将其列出在必须具有焦点的元素中,并且大多数(所有?)浏览器也都遵循。
当您[右键]单击某个元素时,它会“模糊”先前关注的元素(如果有的话),并且“在没有其他元素被明确关注的情况下,用户代理应同步运行body元素的关注步骤,如果存在一个”,换句话说,由于图像无法聚焦,因此它将聚焦于body元素。
如果您需要对图像或其他无法聚焦的元素进行聚焦,则最佳解决方案通常是将其包装在链接中。