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

📄 event.js

📁 这是YUI的源码及相关示例。里面有很多很炫的Javascript效果。
💻 JS
📖 第 1 页 / 共 5 页
字号:
            /**             * Removes a blur event listener             *             * @method removeBlurListener             *             * @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 {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             */            removeBlurListener: function (el, fn) {                             return this._removeListener(el, _BLUR, fn, true);                        },            /**             * 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].slice();                for (var i=0, len=lh.length; i<len; ++i) {                // for (var i in lh.length) {                    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) {return (this.webkit && this.webkit < 419 && ("click"==sType || "dblclick"==sType));            },                                /**             * 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.             * @param {boolen}      capture capture or bubble phase                          * @return {boolean} true if the unbind was successful, false              *  otherwise.             * @static             * @private             */            _removeListener: function(el, sType, fn, capture) {                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=el.length-1; i>-1; i--) {                        ok = ( this._removeListener(el[i], sType, fn, capture) && ok );                    }                    return ok;                }                if (!fn || !fn.call) {                    //return false;                    return this.purgeElement(el, false, sType);                }                if ("unload" == sType) {                    for (i=unloadListeners.length-1; i>-1; 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;                // The index is a hidden parameter; needed to remove it from                // the method signature because it was tempting users to                // try and take advantage of it, which is not possible.                var index = arguments[4];                  if ("undefined" === typeof index) {                    index = this._getCacheIndex(el, sType, fn);                }                if (index >= 0) {                    cacheItem = listeners[index];                }                if (!el || !cacheItem) {                    return false;                }                if (this.useLegacyEvent(el, sType)) {                    var legacyIndex = this.getLegacyIndex(el, sType);                    var llist = legacyHandlers[legacyIndex];                    if (llist) {                        for (i=0, len=llist.length; i<len; ++i) {                        // for (i in llist.length) {                            li = llist[i];                            if (li &&                                 li[this.EL] == el &&                                 li[this.TYPE] == sType &&                                 li[this.FN] == fn) {                                    llist.splice(i, 1);                                    // llist[i]=null;                                    break;                            }                        }                    }                } else {                    try {                        this._simpleRemove(el, sType, cacheItem[this.WFN], capture);                    } catch(ex) {                        this.lastError = ex;                        return false;                    }                }                // removed the wrapped handler                delete listeners[index][this.WFN];                delete listeners[index][this.FN];                listeners.splice(index, 1);                // listeners[index]=null;                return true;            },            /**             * 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) {				return this._removeListener(el, sType, fn, false);            },            /**             * Returns the event's target element.  Safari sometimes provides             * a text node, and this is automatically resolved to the text             * node's parent so that it behaves like other browsers.             * @method getTarget             * @param {Event} ev the event             * @param {boolean} resolveTextNode when set to true the target's             *                  parent will be returned if the target is a              *                  text node.  @deprecated, the text node is             *                  now resolved automatically             * @return {HTMLElement} the event's target             * @static             */            getTarget: function(ev, resolveTextNode) {                var t = ev.target || ev.srcElement;                return this.resolveTextNode(t);            },            /**             * In some cases, some browsers will return a text node inside             * the actual element that was targeted.  This normalizes the             * return value for getTarget and getRelatedTarget.             * @method resolveTextNode             * @param {HTMLElement} node node to resolve             * @return {HTMLElement} the normized node             * @static             */            resolveTextNode: function(n) {                try {                    if (n && 3 == n.nodeType) {                        return n.parentNode;                    }                } catch(e) { }                return n;            },            /**             * Returns the event's pageX             * @method getPageX             * @param {Event} ev the event             * @return {int} the event's pageX             * @static             */            getPageX: function(ev) {                var x = ev.pageX;                if (!x && 0 !== x) {                    x = ev.clientX || 0;                    if ( this.isIE ) {                        x += this._getScrollLeft();                    }                }                return x;            },            /**             * Returns the event's pageY             * @method getPageY             * @param {Event} ev the event             * @return {int} the event's pageY             * @static             */            getPageY: function(ev) {                var y = ev.pageY;                if (!y && 0 !== y) {                    y = ev.clientY || 0;                    if ( this.isIE ) {                        y += this._getScrollTop();                    }                }                return y;            },            /**             * Returns the pageX and pageY properties as an indexed array.             * @method getXY             * @param {Event} ev the event             * @return {[x, y]} the pageX and pageY properties of the event             * @static             */            getXY: function(ev) {                return [this.getPageX(ev), this.getPageY(ev)];            },            /**             * Returns the event's related target              * @method getRelatedTarget             * @param {Event} ev the event             * @return {HTMLElement} the event's relatedTarget             * @static             */            getRelatedTarget: function(ev) {                var t = ev.relatedTarget;                if (!t) {                    if (ev.type == "mouseout") {                        t = ev.toElement;                    } else if (ev.type == "mouseover") {                        t = ev.fromElement;                    }                }                return this.resolveTextNode(t);            },            /**             * Returns the time of the event.  If the time is not included, the             * event is modified using the current time.             * @method getTime             * @param {Event} ev the event             * @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             */

⌨️ 快捷键说明

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