你知道页面上常见的事件类型吗

作者: baiying | 来源:发表于2017-08-18 15:12 被阅读34次

    我们常用的事件类型有UI事件,焦点事件,鼠标事件,滚轮事件,键盘事件和文本事件,用了跨浏览器添加事件处理程序的方法来小试一下哦,大概思路是先定义一个对象,里边包含了两个方法,添加事件处理程序和移除事件处理程序,并且做到了跨浏览器使用,我在该对象的基础上添加了一些常用的事件的处理程序,可以直接拿过去用哦,当然还有一些不太常见的(例如复合事件,变动事件等等)此处没做过多尝试

    //html
    <body>
    <button  id="btn">button</button>
    <input type="text" id="in">
    </body>
    
    //JavaScript
    window.onload = function () {
        var btn = document.getElementById('btn');
        var input  =document.getElementById('in');
    
        var EventUtil = {
            addHandler: function (element, type, handler) {
                if (element.addEventListener) {
                    element.addEventListener(type, handler, false)
                }
                else if (element.attachEvent) {
                    element.attachEvent('on' + type, handler)
                }
                else {
                    element['on' + type] = handler;
                }
            },
            removeHandler: function (element, type, handler) {
                if (element.addEventListener) {
                    element.removeEventListener(type, handler, false)
                }
                else if (element.attachEvent) {
                    element.detachEvent('on' + type, handler)
                }
                else {
                    element['on' + type] = null;
                }
            }
        };
    
        function handler(event) {
            console.log(event.type);
        }
    
        //常见UI事件
        EventUtil.addHandler(window, 'load', handler);//页面加载后触发,也可以是当所有框架加载完,图像加载完触发
        EventUtil.addHandler(window, 'unload', handler);//页面卸载后触发,也可以是当所有框架卸载完,图像卸载完触发,只要用户从一个页面切换到另一个页面就会发生unload事件
        EventUtil.addHandler(window, 'resize', handler);//浏览器窗口被调整到一个新的高度时触发
    
        //常见焦点事件
        EventUtil.addHandler(btn, 'blur', handler);//元素失去焦点时触发,不支持冒泡
        EventUtil.addHandler(btn, 'focus', handler);//元素获得焦点时触发,不支持冒泡
        EventUtil.addHandler(btn, 'focusin', handler);//元素获得焦点时触发,支持冒泡
        EventUtil.addHandler(btn, 'focusout', handler);//元素失去焦点时触发,支持冒泡
    
        //鼠标与滚轮事件
        EventUtil.addHandler(btn, 'click', handler);//单击主鼠标按钮或者按下回车时触发
        EventUtil.addHandler(btn, 'dbclick', handler);//双击主鼠标按钮时触发
        EventUtil.addHandler(btn, 'mousedown', handler);//按下任意鼠标按钮时触发
        EventUtil.addHandler(btn, 'mouseenter', handler);//鼠标光标首次从元素外部移动到元素范围之内时触发
        EventUtil.addHandler(btn, 'mouseleave', handler);//位于元素上方的鼠标光标移动到元素范围之外时触发
        EventUtil.addHandler(btn, 'mousemove', handler);//鼠标光标在元素内部移动时重复触发
        EventUtil.addHandler(btn, 'mouseout', handler);//位于元素上方的鼠标光标移动到另一个元素时触发
        EventUtil.addHandler(btn, 'mouseover', handler);//鼠标指针位于一个元素外部,首次将其移入另一个元素边界之内时触发
        EventUtil.addHandler(btn, 'mouseup', handler);//释放鼠标按钮时触发
        EventUtil.addHandler(btn, 'mousewheel', handler);//可指定给页面中的任何元素或者document对象,当用户通过鼠标滚轮与页面交互,垂直方向上滚动页面时就会触发
    
        //键盘与文本事件
        EventUtil.addHandler(btn, 'keydown', handler);//按下键盘上的任意键触发,按住不放会重复触发
        EventUtil.addHandler(btn, 'keypress', handler);//按下键盘上的字符键时触发,按住不放会重复触发
        EventUtil.addHandler(btn, 'keyup', handler);//释放键盘上的键时触发
        EventUtil.addHandler(input, 'textInput', handler);//DOM3引入的,在可编辑区域中输入字符时触发,用于代替keypress,不同是keypress能被任何可以获得焦点的元素触发,但只有可编辑区域才能触发textInput
    
    };
    

    相关文章

      网友评论

        本文标题:你知道页面上常见的事件类型吗

        本文链接:https://www.haomeiwen.com/subject/qhjarxtx.html