在焦点变换时获得聚焦元素



我正试图记录最后一个有焦点的文本输入元素。我的代码:

document.addEventListener('focus', function(e) {
var obj = document.activeElement;
if(obj instanceof HTMLInputElement && obj.type == 'text'){
console.log('true');
}
}, false);

当然,我做了console.log(obj);,它在body元素上触发得很好,但在其他地方没有。除此之外,它似乎只触发一次。我不确定我做错了什么,也不确定这是否是正确的方法。所以我希望你们能帮助我。

注意:我知道用点击事件可以很容易地解决这个问题,但任何使用Tab浏览表单元素的人都会遇到问题。所以这不是一个解决方案。

您可以与window绑定并允许冒泡,您将获得带有target的元素。

window.addEventListener('focus', function(e) {
if (e.target.id) console.log(e.target.id)
}, true);
<input type="text" id="tb1">
<input type="button" id="btn1" value="button">
<a href="#foo" id="link1">test</a>

最新更新