事件驱动
    js控制页面的行为是由事件驱动的。
    
    什么是事件?(怎么发生的)
    事件就是js侦测到用户的操作或是页面上的一些行为
 
    事件源(发生在谁身上)
    引发事件的元素
 
    事件处理程序(发生了什么事)
    对事件处理的程序或函数
 
    事件对象(用来记录发生事件时的相关信息)
    只有在事件发生的时候,才会产生事件对象,无法手动创建,并且事件对象只能在处理函数内部访问,处理函数允许      结束后该对象自动销毁
  事件对象的概念和作用
例子:老大说,你去帮我办个事
           你说,遵命。
          老大说,给你配个对象兼秘书,叫event(伊文),比较羞涩,用的时候,得叫她出来,平时需要隐藏起来
 
通过这个故事可以得知:
    老大是浏览器
    你是事件源;让你做的事是事件处理程序;走着去 是点击事件等
    女秘书,就是事件对象,向你提供完成这件事的所有帮助
    每做一件事,老大给配不同的秘书 / 每个事件都有不同的事件对象
    1.事件有对象!叫事件对象(event)
    2.事件对象是浏览器给的
    3.事件对象不叫不出来
 
什么是event事件对象?
    用来记录一些事件发生时的相关信息的对象,每次事件发生的时候,会在函数或方法内部产生一个事件对象,这个事件对象就是event。
 
    特征:
        1.只有当事件发生的时候才会产生,只能在处理函数内部访问
        2.处理函数运行结束后自动销毁
 
获取方式(兼容问题)
    怎么把贴身小秘书event叫出来呢?
 
    如何获取event事件?
    事件对象需要作为参数传入事件。
 
    function fn(event){
        console.log(event)
    }
    或者
    function(){
        console.log(arguments[0])
    }
    
    缺德定律再现!
    IE中:          window.event
    正常浏览器中:    对象.on事件 = function(event){}
 
    兼容方式:
    function fn(eve){
        var e = eve || window.event;
    }
 
    
   document.onclick = function(eve){
       var e = eve || window.event;
       console.log(e);
   }
   注意:event需要逐层传递,不要疏忽外部的function
 
在W3C标准中:事件可以写在行内,但是因为结构和行为要分离,所以我们一半情况下用JS的方法来绑定事件,只有在极少数情况下,才将事件写在行内。
 
 
    行内事件又叫:HTML事件处理程序
    事件的绑定方法:
    浏览器中的节点(节点).on事件名 = function(){ 要干什么?(放在浏览器中,不执行,当事件发生的时候再执行) }
    总结:事件就是给浏览器定义一个预处理函数,当事件触发的时候,执行函数,这就是事件。
 
 
事件分类  

鼠标事件

复制代码
/*
onclick:点击某个对象时触发
ondblclick:双击某个对象时触发
onmouseover:鼠标移入某个元素时触发
onmouseout:鼠标移出某个元素时触发
onmouseenter:鼠标进入某个元素时触发
onmouseleave:鼠标离开某个元素时触发
onmousedown:鼠标按下时触发
onmouseup:鼠标抬起时触发
onmousemove:鼠标被移动时触发
onwheel:鼠标滚轮滚动时触发
oncontextmenu:点击鼠标右键时触发
*/
复制代码

 

鼠标事件常用属性介绍
    老大给的美女对象event能用来做什么?
 
    检测按下的鼠标按键:event.button
    返回值为0,左键;返回值为1,中键;返回值为2,右键
 
    检测相对于浏览器的位置:clientX和clientY
    当鼠标事件发生时,鼠标相对于浏览器左上角的位置
    
    检测相对于文档的位置:pageX和pageY
    当鼠标事件发生时,鼠标相对于文档左上角的位置。(IE7/8无)(类似于event.clientX和event.clientY)
 
    检测相对于屏幕的位置:screenX和screenY
    当鼠标事件发生时,鼠标相对于屏幕左上角的位置
 
    检测相对于事件源的位置:offsetX和offsetY
    当鼠标事件发生时,鼠标相对于事件发生元素左上角的位置
 

 

键盘事件

/*
onkeydown:键盘的键按下时触发
onkeyup:键盘的键放开时触发
onkeypress:按下或按住键盘键时触发
*/
得知按下的键盘上的哪个键:keyCode
    贴身女秘书还能做点啥?
 
    event.keyCode        返回当前按键的ASCII码
 
        空格    32
        回车    13
        左      37
        上      38
        右      39
        下      40
 
    兼容问题:  var eve = eve || window.event
              var keyC = eve.keyCode || eve.which
 
    案例:通过键盘上下左右,控制页面中的元素位置移动
 
 
    ctrlKey        判断ctrl是否被按下,按下返回true
    shiftKey       判断shift是否被按下,按下返回true
    altKey         判断alt是否被按下,按下返回true

 

 

 

框架/对象事件

复制代码
/*
onresize:浏览器窗口大小改变时触发
onabort:图形的加载被中断时触发
onload:元素加载完时触发
onerror:当加载文档或者图片时(没找到)发生的错误时触发
onscroll:文档滚动时触发
onpageshow:用户访问页面时触发
onunload:用户退出页面时触发
*/
复制代码

表单事件

复制代码
/*
onfocus:元素获得焦点时触发
onblur:元素失去焦点时触发
onchange:元素内容改变时触发
oninput:元素获取用户输入时触发
onsubmit:提交按钮时触发
onreset:重置按钮时触发
onselect:文本被选中时触发
*/
复制代码

拖动事件

/*
ondrag:元素正在拖动时触发
ondragend:用户完成元素拖动时触发
*/

多媒体事件

/*
onplay:在视频/音频开始播放时触发
onended:在视频/音频播放结束时触发
onpause:在视频/音频暂停时触发
*/                                                                     
posted on 2019-10-12 14:18  __"仅此少年ღ  阅读(817)  评论(0编辑  收藏  举报