うーん... 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ではクリックされた(タブではなく)ボタンにフォーカスが設定されないことに注意してください。