事件

176 阅读2分钟

事件概念

    事件是用户在网页中的行为
    
    语法:
        标签.on类型=函数
        
    标签:
        获取到的标签
        document
        window
        body
    
    事件类型:
            鼠标类:
                    单击 -- click
                    双击 -- dblclick
                    移入 -- mouseover
                         -- mouseenter
                         
                    移出 -- mouseout
                         -- mouseleave
                         
                    移动 -- mousemove
                    按下 -- mousedown
                    弹起 -- mouseup
                    滚轮 -- mousewheel
                    右击 -- contextmenu
           
           键盘类:
                   键盘按住 -- keydown
                            -- keypress
                   键盘弹起 -- keyup
          
           表单类:
                   失去焦点 -- blur
                   获取焦点 -- focus
                   改变     -- change
                   表单提交 -- submit
                   文本框内容变化 -- input
                   
          window:
                   滚动条 -- scroll
                   加载   -- load
                   窗口大小 -- resize
                   
     函数:
         匿名函数:function (){}
         函数名称:function fn(){}
         

事件流

    概念:事件从开始触发到执行结束的整个过程
    
    3个阶段:
            捕获阶段 -- 由外向内找目标元素的过程
            目标阶段 -- 找到目标元素执行他的过程
            冒泡阶段 -- 由内向外离开目标元素的过程 --> 祖宗标签的同类型事件会在冒泡阶段执行

事件侦听器

    概念:是另一种绑定事件的方式
    语法:
        标签.addEventListener(事件类型,函数,这个事件是否在后代表标签的捕获阶段执行-是一个布尔值,不写默认为false)
            box.addEventListener('click',function fn(){},false) 
    
    解绑:标签.on类型 绑定的事件  -- 标签.on类型=null
           div.onclick = function (){
               div.onclick = null
           }
         
         事件侦听器绑定的事件 -- 标签.removeEventListener(事件类型,对应的函数)
             box.addEventListener('click',function fn(){},false)
             box.removeEventListener('click',function fn(){})
         注意:
             解绑的类型和绑定的类型要保持一致
             解绑的函数和绑定的函数必须是同一个

事件对象

    概念: 事件中用于记录当前事件所有详细信息的对象
    
    获取:
        事件函数的参数1
        事件函数中用window.event
    
    作用:
        获取鼠标位置:
                相对于浏览器可视窗口:
                                  e.clientX
                                  e.clientY
                相对于当前标签:
                                e.offsetX
                                e.offsetY
                相当于当前文档:
                                e.pageX
                                e.pageY
       
       获取键盘按键码:
                   e.keyCode:
                           字母是大写的Ascii码
                           字母是小写的Ascii码
                           回车 -- 13
                           空格 -- 32
                           左上右下 -- 37 38 39 40
                  组合键:
                      e.shiftKey
                      e.ctrlKey
                      e.altKey
                      
       获取事件类型 -- e.type
       
       获取鼠标按键码 -- e.button
       
       阻止事件冒泡 -- e.stopPropagation
       
       阻止默认行为 
                  e.prevntDefault()
                  在事件函数末尾 return false
       
       获取精准的目标元素  
                       e.target --> 实现事件委托:
                                               将子标签事件给父标签绑定,在事件函数中,通过判断精准的目标元素是否是子标签
                                               原理:利用了事件冒泡
                                               好处:
                                                   提高绑定效率
                                                   动态添加子标签也可以具备事件