faqts : Computers : Programming : Languages : JavaScript : Event handling

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

33 of 103 people (32%) answered Yes
Recently 2 of 10 people (20%) answered Yes

Entry

Can I keep track of which element has focus?
Can I keep track of which element has focus?

Apr 8th, 2000 07:34
Martin Honnen,


First, in NN3/4 form elements have an
  onfocus
and
  onblur
handler allowing you to script those events for individual elements. 
IE4+ and NN6 also provide onfocus/onblur for other page elements like 
links.
If you want to globally monitor the focus you can do so in NN4 and NN6 
by handling
  document.onfocus
  document.onblur
as in the following example:

<HTML>
<HEAD>
<SCRIPT>
var focussedElement;
if (document.layers)
  document.captureEvents(Event.FOCUS | Event.BLUR);
document.onfocus = function (evt) {
  if (focussedElement)
    focussedElement.focussed = false;
  focussedElement =
    evt.target ? evt.target : event.srcElement;
  focussedElement.focussed = true;
  window.status = 'focus on: ' +
    (focussedElement.id ? focussedElement.id : 
     focussedElement.name ? focussedElement.name : focussedElement);
}
document.onblur = function (evt) {
  if (focussedElement)
    focussedElement.focussed = false;
  focussedElement = null;
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="formName">
<INPUT TYPE="text" NAME="aField" VALUE="Kibo">
<INPUT TYPE="button" NAME="aButton" VALUE="button">
</FORM>
<A HREF="http://JavaScript.FAQTs.com">
JavaScript.FAQTs.com
</A>          
</BODY>
</HTML> 

IE4+ doesn't allow that as focus/blur events in IE don't bubble 
(meaning the focus/blur event of page elements dont't show up at the 
document level). So all you could do with IE4+ is loop through 
document.all and assign onfocus/onblur handlers for every element.