• 【avalon源码】


    1.

    document.getElementsByTagName('head')[0]
    document.head

    2.

    3.

    var IEVersion = NaN
    if (window.VBArray) {
        IEVersion = document.documentMode || (window.XMLHttpRequest ? 7 : 6)
    }

    4.

    function returnRandom() {
        return new Date() - 0
    }

    5.

    for (var i = 0, n = array.length; i < n; i++) { // n
    }

    6.

    var rword = /[^, ]+/g // ^排除
    ' m, f'.match(rword) // ["m", "f"]
    var class2type = {}
    "Boolean Number String Function Array Date RegExp Object Error".replace(rword, function (name) {
        class2type["[object " + name + "]"] = name.toLowerCase()
    })
    class2type

    7.

    avalon.each({
        scrollLeft: "pageXOffset",
        scrollTop: "pageYOffset"
    }, function (method, prop) {
        avalon.fn[method] = function (val) {
            var node = this[0] || {},
                    win = getWindow(node),
                    top = method === "scrollTop"
            if (!arguments.length) {
                return win ? win[prop] : node[method]
            } else {
                if (win) { // scrollTo(xpos,ypos)
                    win.scrollTo(!top ? val : win[prop], top ? val : win[prop])
                } else {
                    node[method] = val
                }
            }
        }
    })

     8.

    var eventHooks = {
        "mouseenter": {
            type: "mouseover",
            fix: function(elem, fn) {
                return function (e) {
                    var t = e.relatedTarget
                    if (!t || (t !== elem && !(elem.compareDocumentPosition(t) & 16))) {
                        delete e.type
                        e.type = "mouseenter"
                        return fn.call(elem, e)
                    }
                }
            }
        }
    }
    
    function bind(el, type, fn, phase) {
        var hooks = eventHooks
        var hook = hooks[type]
        if (typeof hook === "object") {
            type = hook.type || type
            phase = hook.phase || !!phase
            fn = hook.fix ? hook.fix(el, fn) : fn
        }
        el.addEventListener(type, fn, phase)
        return fn
    }
    
    
    bind(document.querySelector('#box'), 'click', function(e) {
        console.log(this)
        console.log(e)
    })
    
    bind(document.querySelector('#box'), 'mouseenter', function(e) {
        console.log(this)
        console.log(e)
    })

    9.

    if (DOC.onmousewheel === void 0) {
        /* IE6-11 chrome mousewheel wheelDetla 下 -120 上 120
         firefox DOMMouseScroll detail 下3 上-3
         firefox wheel detlaY 下3 上-3
         IE9-11 wheel deltaY 下40 上-40
         chrome wheel deltaY 下100 上-100 */
        eventHooks.mousewheel = {
            type: "wheel",
            fix: function (elem, fn) {
                return function (e) {
                    e.wheelDeltaY = e.wheelDelta = e.deltaY > 0 ? -120 : 120
                    e.wheelDeltaX = 0
                    Object.defineProperty(e, "type", {
                        value: "mousewheel"
                    })
                    fn.call(elem, e)
                }
            }
        }
    }

    10.

     

    11.

    12.

    while (fn = readyList.shift()) {
        fn(avalon)
    }
  • 相关阅读:
    P2824 [HEOI2016/TJOI2016]排序
    P4930「FJ2014集训」采药人的路径
    FlexboxLayout 的一些基本介绍与基本用法
    Android——打造万能适配器(CommonAdapter)
    关于list、set、map的几点总结
    equals()和hashCode()区别?
    Android开发艺术探索(一)——Activity的生命周期和启动模式
    Android开发艺术探索(三)——View的事件体系
    Android五大布局重新回顾
    Android基础知识回顾
  • 原文地址:https://www.cnblogs.com/jzm17173/p/5969456.html
Copyright © 2020-2023  润新知