嗯... 在 Firefox 中,您可以使用explicitOriginalTarget
拉取被点击的元素。我希望toElement
对 IE 做同样的事情,但它似乎不起作用......但是,您可以从文档中提取新聚焦的元素:
function showBlur(ev)
{
var target = ev.explicitOriginalTarget||document.activeElement;
document.getElementById("focused").value =
target ? target.id||target.tagName||target : '';
}
...
<button id="btn1" onblur="showBlur(event)">Button 1</button>
<button id="btn2" onblur="showBlur(event)">Button 2</button>
<button id="btn3" onblur="showBlur(event)">Button 3</button>
<input id="focused" type="text" disabled="disabled" />
警告:此技术不适用于使用键盘在字段中切换引起的焦点更改,并且在 Chrome 或 Safari 中根本不起作用。使用activeElement
(IE除外)的一个大问题是它直到事件处理完毕后才会持续更新,并且blur
在处理过程中可能根本没有有效值!这可以通过改变 Michiel 最终使用的技术来缓解:
function showBlur(ev)
{
// Use timeout to delay examination of activeElement until after blur/focus
// events have been processed.
setTimeout(function()
{
var target = document.activeElement;
document.getElementById("focused").value =
target ? target.id||target.tagName||target : '';
}, 1);
}
这应该适用于大多数现代浏览器(在 Chrome、IE 和 Firefox 中测试),但需要注意的是,Chrome 不会将焦点放在被点击的按钮上(与标签页相比)。