Here is the code (borrowed from some project) I'm using for bubbling focus 
and blur events:

/**
 * Bubbling focus:in and focus:out events.
 * Usage:
 *   document.on("focus:in", selector, focusHandler); // on focus
 *   document.on("focus:out", selector, blurHandler); // on blur
 */
(function() {
  // custom stripped version of Event.findElement
  function element(event) {
    //var node = Event.extend(event).target;
    var node = event.target || event.srcElement;
    return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode 
: node);
  }

  // custom optimized version of event firing
  var fire = document.createEvent ? (function fireDOM(element, eventName) {
    if (element == document && !element.dispatchEvent) {
      element = document.documentElement;
    }
    var event = document.createEvent('HTMLEvents');
    event.initEvent('dataavailable', true, true);
    event.eventName = eventName;
    event.memo = {};
    element.dispatchEvent(event);
  }) : (function fireIE(element, eventName) {
    var event = document.createEventObject();
    event.eventType = 'ondataavailable';
    event.eventName = eventName;
    event.memo = {};
    element.fireEvent(event.eventType, event);
  });

  function focusInHandler(event) {
    //Event.findElement(event).fire("focus:in");
    fire(element(event), "focus:in");
  }
  function focusOutHandler(event) {
    //Event.findElement(event).fire("focus:out");
    fire(element(event), "focus:out");
  }

  if (document.addEventListener) {
    document.addEventListener("focus", focusInHandler, true);
    document.addEventListener("blur", focusOutHandler, true);
  } else {
    document.observe("focusin", focusInHandler);
    document.observe("focusout", focusOutHandler);
  }
})();

-- 
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/prototype-scriptaculous/-/CKUmXBHB7ZMJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.

Reply via email to