Jifty
view release on metacpan or search on metacpan
share/web/static/js/yui/event.js view on Meta::CPAN
/**
* When using legacy events, the handler is routed to this object
* so we can fire our custom listener stack.
* @method fireLegacyEvent
* @static
* @private
*/
fireLegacyEvent: function(e, legacyIndex) {
var ok=true,le,lh,li,scope,ret;
lh = legacyHandlers[legacyIndex];
for (var i=0,len=lh.length; i<len; ++i) {
li = lh[i];
if ( li && li[this.WFN] ) {
scope = li[this.ADJ_SCOPE];
ret = li[this.WFN].call(scope, e);
ok = (ok && ret);
}
}
// Fire the original handler if we replaced one. We fire this
// after the other events to keep stopPropagation/preventDefault
// that happened in the DOM0 handler from touching our DOM2
// substitute
le = legacyEvents[legacyIndex];
if (le && le[2]) {
le[2](e);
}
return ok;
},
/**
* Returns the legacy event index that matches the supplied
* signature
* @method getLegacyIndex
* @static
* @private
*/
getLegacyIndex: function(el, sType) {
var key = this.generateId(el) + sType;
if (typeof legacyMap[key] == "undefined") {
return -1;
} else {
return legacyMap[key];
}
},
/**
* Logic that determines when we should automatically use legacy
* events instead of DOM2 events. Currently this is limited to old
* Safari browsers with a broken preventDefault
* @method useLegacyEvent
* @static
* @private
*/
useLegacyEvent: function(el, sType) {
if (this.webkit && ("click"==sType || "dblclick"==sType)) {
var v = parseInt(this.webkit, 10);
if (!isNaN(v) && v<418) {
return true;
}
}
return false;
},
/**
* Removes an event listener
*
* @method removeListener
*
* @param {String|HTMLElement|Array|NodeList} el An id, an element
* reference, or a collection of ids and/or elements to remove
* the listener from.
* @param {String} sType the type of event to remove.
* @param {Function} fn the method the event invokes. If fn is
* undefined, then all event handlers for the type of event are
* removed.
* @return {boolean} true if the unbind was successful, false
* otherwise.
* @static
*/
removeListener: function(el, sType, fn) {
var i, len, li;
// The el argument can be a string
if (typeof el == "string") {
el = this.getEl(el);
// The el argument can be an array of elements or element ids.
} else if ( this._isValidCollection(el)) {
var ok = true;
for (i=0,len=el.length; i<len; ++i) {
ok = ( this.removeListener(el[i], sType, fn) && ok );
}
return ok;
}
if (!fn || !fn.call) {
//return false;
return this.purgeElement(el, false, sType);
}
if ("unload" == sType) {
for (i=0, len=unloadListeners.length; i<len; i++) {
li = unloadListeners[i];
if (li &&
li[0] == el &&
li[1] == sType &&
li[2] == fn) {
//unloadListeners.splice(i, 1);
unloadListeners[i]=null;
return true;
}
}
return false;
}
var cacheItem = null;
( run in 0.667 second using v1.01-cache-2.11-cpan-5b529ec07f3 )