91 lines
2.4 KiB
JavaScript
Executable File
91 lines
2.4 KiB
JavaScript
Executable File
/*
|
|
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
|
|
Code licensed under the BSD License:
|
|
http://developer.yahoo.net/yui/license.txt
|
|
version: 3.0.0
|
|
build: 1549
|
|
*/
|
|
YUI.add('event-focus', function(Y) {
|
|
|
|
/**
|
|
* Adds focus and blur event listener support. These events normally
|
|
* do not bubble, so this adds support for that so these events
|
|
* can be used in event delegation scenarios.
|
|
*
|
|
* @module event
|
|
* @submodule event-focus
|
|
*/
|
|
(function() {
|
|
|
|
var UA = Y.UA,
|
|
Event = Y.Event,
|
|
plugins = Y.Env.evt.plugins,
|
|
ie = UA.ie,
|
|
bUseMutation = (UA.opera || UA.webkit),
|
|
eventNames = {
|
|
focus: (ie ? 'focusin' : (bUseMutation ? 'DOMFocusIn' : 'focus')),
|
|
blur: (ie ? 'focusout' : (bUseMutation ? 'DOMFocusOut' : 'blur'))
|
|
},
|
|
|
|
// Only need to use capture phase for Gecko since it doesn't support
|
|
// focusin, focusout, DOMFocusIn, or DOMFocusOut
|
|
CAPTURE_CONFIG = { capture: (UA.gecko ? true : false) },
|
|
|
|
|
|
attach = function (args, config) {
|
|
|
|
var a = Y.Array(args, 0, true);
|
|
a[0] = eventNames[a[0]];
|
|
return Event._attach(a, config);
|
|
|
|
},
|
|
|
|
eventAdapter = {
|
|
|
|
on: function () {
|
|
return attach(arguments, CAPTURE_CONFIG);
|
|
}
|
|
|
|
};
|
|
|
|
|
|
Event._attachFocus = attach;
|
|
Event._attachBlur = attach;
|
|
|
|
/**
|
|
* Adds a DOM focus listener. Uses the focusin event in IE,
|
|
* DOMFocusIn for Opera and Webkit, and the capture phase for Gecko so that
|
|
* the event propagates in a way that enables event delegation.
|
|
*
|
|
* @for YUI
|
|
* @event focus
|
|
* @param type {string} 'focus'
|
|
* @param fn {function} the callback function to execute
|
|
* @param o {string|HTMLElement|collection} the element(s) to bind
|
|
* @param context optional context object
|
|
* @param args 0..n additional arguments to provide to the listener.
|
|
* @return {EventHandle} the detach handle
|
|
*/
|
|
plugins.focus = eventAdapter;
|
|
|
|
/**
|
|
* Adds a DOM blur listener. Uses the focusout event in IE,
|
|
* DOMFocusOut for Opera and Webkit, and the capture phase for Gecko so that
|
|
* the event propagates in a way that enables event delegation.
|
|
*
|
|
* @for YUI
|
|
* @event blur
|
|
* @param type {string} 'blur'
|
|
* @param fn {function} the callback function to execute
|
|
* @param o {string|HTMLElement|collection} the element(s) to bind
|
|
* @param context optional context object
|
|
* @param args 0..n additional arguments to provide to the listener.
|
|
* @return {EventHandle} the detach handle
|
|
*/
|
|
plugins.blur = eventAdapter;
|
|
|
|
})();
|
|
|
|
|
|
}, '3.0.0' ,{requires:['node-base']});
|