⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 event.js

📁 一个使用yui-ext库
💻 JS
📖 第 1 页 / 共 5 页
字号:
             * @return {Date} the time of the event             * @static             */            getTime: function(ev) {                if (!ev.time) {                    var t = new Date().getTime();                    try {                        ev.time = t;                    } catch(ex) {                         this.lastError = ex;                        return t;                    }                }                return ev.time;            },            /**             * Convenience method for stopPropagation + preventDefault             * @method stopEvent             * @param {Event} ev the event             * @static             */            stopEvent: function(ev) {                this.stopPropagation(ev);                this.preventDefault(ev);            },            /**             * Stops event propagation             * @method stopPropagation             * @param {Event} ev the event             * @static             */            stopPropagation: function(ev) {                if (ev.stopPropagation) {                    ev.stopPropagation();                } else {                    ev.cancelBubble = true;                }            },            /**             * Prevents the default behavior of the event             * @method preventDefault             * @param {Event} ev the event             * @static             */            preventDefault: function(ev) {                if (ev.preventDefault) {                    ev.preventDefault();                } else {                    ev.returnValue = false;                }            },                         /**             * Finds the event in the window object, the caller's arguments, or             * in the arguments of another method in the callstack.  This is             * executed automatically for events registered through the event             * manager, so the implementer should not normally need to execute             * this function at all.             * @method getEvent             * @param {Event} e the event parameter from the handler             * @return {Event} the event              * @static             */            getEvent: function(e) {                var ev = e || window.event;                if (!ev) {                    var c = this.getEvent.caller;                    while (c) {                        ev = c.arguments[0];                        if (ev && Event == ev.constructor) {                            break;                        }                        c = c.caller;                    }                }                return ev;            },            /**             * Returns the charcode for an event             * @method getCharCode             * @param {Event} ev the event             * @return {int} the event's charCode             * @static             */            getCharCode: function(ev) {                return ev.charCode || ev.keyCode || 0;            },            /**             * Locating the saved event handler data by function ref             *             * @method _getCacheIndex             * @static             * @private             */            _getCacheIndex: function(el, sType, fn) {                for (var i=0,len=listeners.length; i<len; ++i) {                    var li = listeners[i];                    if ( li                 &&                          li[this.FN] == fn  &&                          li[this.EL] == el  &&                          li[this.TYPE] == sType ) {                        return i;                    }                }                return -1;            },            /**             * Generates an unique ID for the element if it does not already              * have one.             * @method generateId             * @param el the element to create the id for             * @return {string} the resulting id of the element             * @static             */            generateId: function(el) {                var id = el.id;                if (!id) {                    id = "yuievtautoid-" + counter;                    ++counter;                    el.id = id;                }                return id;            },            /**             * We want to be able to use getElementsByTagName as a collection             * to attach a group of events to.  Unfortunately, different              * browsers return different types of collections.  This function             * tests to determine if the object is array-like.  It will also              * fail if the object is an array, but is empty.             * @method _isValidCollection             * @param o the object to test             * @return {boolean} true if the object is array-like and populated             * @static             * @private             */            _isValidCollection: function(o) {                return ( o                    && // o is something                         o.length             && // o is indexed                         typeof o != "string" && // o is not a string                         !o.tagName           && // o is not an HTML element                         !o.alert             && // o is not a window                         typeof o[0] != "undefined" );            },            /**             * @private             * @property elCache             * DOM element cache             * @static             */            elCache: {},            /**             * We cache elements bound by id because when the unload event              * fires, we can no longer use document.getElementById             * @method getEl             * @static             * @private             */            getEl: function(id) {                return document.getElementById(id);            },            /**             * Clears the element cache             * @deprecated Elements are not cached any longer             * @method clearCache             * @static             * @private             */            clearCache: function() { },            /**             * hook up any deferred listeners             * @method _load             * @static             * @private             */            _load: function(e) {                loadComplete = true;                var EU = YAHOO.util.Event;                // Remove the listener to assist with the IE memory issue, but not                // for other browsers because FF 1.0x does not like it.                if (this.isIE) {                    EU._simpleRemove(window, "load", EU._load);                }            },            /**             * Polling function that runs before the onload event fires,              * attempting to attach to DOM Nodes as soon as they are              * available             * @method _tryPreloadAttach             * @static             * @private             */            _tryPreloadAttach: function() {                if (this.locked) {                    return false;                }                this.locked = true;                // keep trying until after the page is loaded.  We need to                 // check the page load state prior to trying to bind the                 // elements so that we can be certain all elements have been                 // tested appropriately                var tryAgain = !loadComplete;                if (!tryAgain) {                    tryAgain = (retryCount > 0);                }                // onAvailable                var notAvail = [];                for (var i=0,len=onAvailStack.length; i<len ; ++i) {                    var item = onAvailStack[i];                    if (item) {                        var el = this.getEl(item.id);                        if (el) {                            // The element is available, but not necessarily ready                            // @todo verify IE7 compatibility                            // @todo should we test parentNode.nextSibling?                            // @todo re-evaluate global content ready                            if ( !item.checkReady ||                                     loadComplete ||                                     el.nextSibling ||                                    (document && document.body) ) {                                var scope = el;                                if (item.override) {                                    if (item.override === true) {                                        scope = item.obj;                                    } else {                                        scope = item.override;                                    }                                }                                item.fn.call(scope, item.obj);                                //delete onAvailStack[i];                                // null out instead of delete for Opera                                onAvailStack[i] = null;                            }                        } else {                            notAvail.push(item);                        }                    }                }                retryCount = (notAvail.length === 0) ? 0 : retryCount - 1;                if (tryAgain) {                    // we may need to strip the nulled out items here                    this.startInterval();                } else {                    clearInterval(this._interval);                    this._interval = null;                }                this.locked = false;                return true;            },            /**             * Removes all listeners attached to the given element via addListener.             * Optionally, the node's children can also be purged.             * Optionally, you can specify a specific type of event to remove.             * @method purgeElement             * @param {HTMLElement} el the element to purge             * @param {boolean} recurse recursively purge this element's children             * as well.  Use with caution.             * @param {string} sType optional type of listener to purge. If             * left out, all listeners will be removed             * @static             */            purgeElement: function(el, recurse, sType) {                var elListeners = this.getListeners(el, sType);                if (elListeners) {                    for (var i=0,len=elListeners.length; i<len ; ++i) {                        var l = elListeners[i];                        // can't use the index on the changing collection                        //this.removeListener(el, l.type, l.fn, l.index);                        this.removeListener(el, l.type, l.fn);                    }                }                if (recurse && el && el.childNodes) {                    for (i=0,len=el.childNodes.length; i<len ; ++i) {                        this.purgeElement(el.childNodes[i], recurse, sType);                    }                }            },            /**             * Returns all listeners attached to the given element via addListener.             * Optionally, you can specify a specific type of event to return.             * @method getListeners             * @param el {HTMLElement} the element to inspect              * @param sType {string} optional type of listener to return. If             * left out, all listeners will be returned             * @return {Object} the listener. Contains the following fields:             * &nbsp;&nbsp;type:   (string)   the type of event             * &nbsp;&nbsp;fn:     (function) the callback supplied to addListener             * &nbsp;&nbsp;obj:    (object)   the custom object supplied to addListener             * &nbsp;&nbsp;adjust: (boolean)  whether or not to adjust the default scope             * &nbsp;&nbsp;index:  (int)      its position in the Event util listener cache             * @static             */                       getListeners: function(el, sType) {                var results=[], searchLists;                if (!sType) {                    searchLists = [listeners, unloadListeners];                } else if (sType == "unload") {                    searchLists = [unloadListeners];                } else {                    searchLists = [listeners];                }                for (var j=0;j<searchLists.length; ++j) {                    var searchList = searchLists[j];                    if (searchList && searchList.length > 0) {                        for (var i=0,len=searchList.length; i<len ; ++i) {                            var l = searchList[i];                            if ( l  && l[this.EL] === el &&                                     (!sType || sType === l[this.TYPE]) ) {                                results.push({                                    type:   l[this.TYPE],                                    fn:     l[this.FN],                                    obj:    l[this.OBJ],                                    adjust: l[this.ADJ_SCOPE],                                    index:  i                                });                            }                        }                    }                }                return (results.length) ? results : null;            },            /**             * Removes all listeners registered by pe.event.  Called              * automatically during the unload event.             * @method _unload             * @static             * @private             */            _unload: function(e) {                var EU = YAHOO.util.Event, i, j, l, len, index;                for (i=0,len=unloadListeners.length; i<len; ++i) {                    l = unloadListeners[i];                    if (l) {                        var scope = window;                        if (l[EU.ADJ_SCOPE]) {                            if (l[EU.ADJ_SCOPE] === true) {                                scope = l[EU.OBJ];                            } else {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -