как то так
UP подправил код
<!DOCTYPE HTML>
<html>
<head>
<style>
#block {
width:200px;
height:200px;
border:4px solid red;
}
body {
border:2px solid black;
}
</style>
</head>
<body tabindex='-1'>
<div tabindex='-1' id='block'>
wereasrwer
<input type='text'>
<div>
<input type='text'>
</div>
</div>
<div id='inform'></div>
<script>
function _(selector) {//функия для удобства написания примера, копипастить не нужно:)
return document.querySelectorAll(selector)[0];
}
!function (){
var elem = _("#block"), focusForElem;
if (elem.addEventListener){
elem.addEventListener('focus' , onFocus,true);
document.addEventListener('focus',onDocumentFocus,true);
} else {
elem.onfocusin = onFocus;
document.onfocusin = onDocumentFocus;
}
function onFocus(e) {
_("#inform").innerHTML = 'focus on '+ this.id;
focusForElem = true;
event.cancelBubble = true;
}
function onDocumentFocus () {
if (focusForElem) {
focusForElem = false;
onBlur();
}
}
function onBlur() {
_("#inform").innerHTML = 'focus on '+ this;
}
}();
</script>
</body>
</html>
Работает в ие 6+ без функции
_() (должно ,не пробывал), в ие8+ точно работает
П.с более гуманного решение не придумал, но может оно и есть так как код писал после того как проснулся=)