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.