Html document.activeelement返回正文 函数invokeFunc(){ //ajax请求 警报(document.activeElement); //这将返回firefox、safari和chrome中的body元素。 }

Html document.activeelement返回正文 函数invokeFunc(){ //ajax请求 警报(document.activeElement); //这将返回firefox、safari和chrome中的body元素。 },html,tabindex,Html,Tabindex,我正在尝试使用适当的tabindex设置文本框上的聚焦模糊 当我调用javascript函数onblur并尝试获取document.activeelement时,它总是返回我的body元素,而不是焦点所在的active元素。在离开旧元素和输入新元素之间,active元素实际上就是document/body本身 演示:@ThiefMaster解释了原因,我想添加一个解决方案来获取新关注的元素: 使用focusout而不是onblur,然后使用relatedTarget属性: const inpu

我正在尝试使用适当的tabindex设置文本框上的聚焦模糊


当我调用javascript函数onblur并尝试获取document.activeelement时,它总是返回我的body元素,而不是焦点所在的active元素。

在离开旧元素和输入新元素之间,active元素实际上就是document/body本身


演示:

@ThiefMaster解释了原因,我想添加一个解决方案来获取新关注的元素:

使用
focusout
而不是
onblur
,然后使用
relatedTarget
属性:

const inputs=document.getElementsByTagName('input');
对于(变量i=0;i{
log('newfocusedelement:',event.relatedTarget);
});
}


列出了一个跨浏览器的document.activeElement函数。谢谢。。我认为可以在ajax事件后以异步方式进行此调用,以将焦点设置在正确的元素上。那么如何确保找到新元素而不是主体?@strava,请参阅我的答案。
<input id="text1" tabindex="1" onblur="invokeFunc()"/>
<input id="text2" tabindex="2" onblur="invokeFunc()"/>

function invokeFunc(){
   // ajax request 
   alert(document.activeElement); 
   // this returns body element in firefox, safari and chrome.
}