第18课——事件与事件监听

鼠标事件补充

    mouseover / mouseout    与     

区别: mouseover / mouseout 会在子元素上触发,用的较少。虽然子元素会触发,但是事件的主体还是由父元素承受
mouseenter / mouseleave 不会在子元素上触发,只在作用源上起效果

浏览器事件

  onl oad 加载 
  onscroll 滚动条滚动
  onresize 浏览器窗口发生改变

表单事件

  1.表单内容改变 onchange
  当表单内容发生改变并且鼠标在表单内数去焦点,会触发
  例:  var inputEle = document.querySelector("input");
        inputEle.onchange = function () {
              console.log("改变了");
        }
  
  2.输入的内容改变 oninput
  例:  var inputEle = document.querySelector("input");
        inputEle.oninput = function (){
              console.log(this.value);
        }
  3.鼠标聚焦事件    onfocus
  例:  var inputEle = document.querySelector("input");
        inputEle.onfocus = function (){
              console.log("聚焦");
        }
  4.鼠标在表单中失去焦点  onblur
  例:  var inputEle = document.querySelector("input");
        inputEle.onblur = function (){
              conssole.log("失去焦点");
        }

移动端

  触摸事件
  1.touchstart     开始触摸  (类似鼠标按下mousedown)
  2.touchmove       触摸移动    (类似鼠标mousemove)
  3.touchend        触摸结束    (类似鼠标mouseup)
  例:  document.ontouchstart = function (){
              console.log("接触屏幕");
        }
        document.ontouchmove = function (){
              console.log("触屏并移动");
        }
        document.ontouchend = function (){
              console.log("从屏幕上移开");
        }

其他事件

  1.过渡结束事件监测    transitionend 
  例:  divEle.ontransitionend = function (){
        console.log("123");
  }
  当div元素有transition过渡的时候,我们可以用transitionend来监测div元素时候过渡结束
  2.动画结束事件监测      animationend
  和transitionend类似动画结束会触发

键盘事件

  全键触发
  1.键按下 keydown
  例:  document.onkeydown = function (){
              console.log("按下了");
        }
  2.按键抬起  keyup
  例:  document.onkeyup = function (){
              console.log("按键抬起了");
        }
  非全键触发
  3.键按压    keypress
  例:  document.onkeypress = function (){
              console.log("键按下");
        }
  注:这里触发元素是document,鼠标在文件中才会触发这些按键。触发事件时
  鼠标焦点得在按的元素内部。

判断键盘的按键

  keyCode 和 key ,keyCode是该键的ASCII码。key是该键的名字字符串。
  例如,按下小写a键,keyCode会显示65,但是key显示的'a'。
  例:  document.onkeydown = function ( event ){
              var e = event || window.event ; 
              var keyCode = e.keyCode || e.which ; 
              var key = e.key ;
              console.log( keyCode , key );
        }
  注: 在谷歌和ie中,keyCode使用会有差别。谷歌一般用e.keyCode表示按键ASCII码,
  ie8以及以下的一般用e.which表示按键ASCII码。现在keyCode处于弃用状态

组合按键

  说到组合按键,需要提一下event事件对象。当我们打印event对象时,会发现很多键名和属性值。其中
  有键名为altKey,ctrlKey,shiftKey这三个我们常用的组合按键。他们的键值有false和true的Boolean
  类型。按下表示true,没按表示false。
  例:   document.onkeydown = function ( event ){
              var e = event || window.event ; 
              var key = e.key ;
              switch( key ){
                    case 'a' :
                          if ( e.altKey ){
                                console.log("按下了alt+a");
                          }
                          break ; 
                    case 'b' :
                          if ( e.ctrlKey ){
                                console.log("按下了ctrl+b");
                          }
                          break ; 
                    case 'C' :
                          if ( e.shiftKey ){
                                console.log("按下了shift+c");
                          }
                          break ; 
                    default:
                          break ;
              }
        }
        注:  在做shift的组合键判断时,shift+字母会让字母变成大写的字母

事件监听

  事件监听
        addEventListener  添加事件监听,并绑定事件
        语法:ele.addEventListener(事件,fn);
        事件源.addEventListener(触发事件,方法/函数);    注:这里触发事件不需要on
        例: BoxEle.addEventListener("click",function(){
              console.log(1111);
        });

     事件监听绑定事件和元素.on触发事件区别

        1.元素.on触发事件,它是一个赋值的过程,将一个函数绑定给触发事件,可以看作是匿名函数赋值
        给一个绑定的事件,当它重复赋值的时候,后面的值会覆盖前面赋值,只会执行最后一个
        即它是一个1对1的关系
        2.事件监听可以看作是函数调用的过程,它不断的调用,然后用fn执行这些内容,函数调用不会盖过
        前面调用的内容
        即它是一个1对多得关系

     事件监听的兼容性
        1.监听的兼容性还是谷歌浏览器和ie浏览器的兼容问题
        在谷歌中,用ele.addEventListener(事件名,fn);给元素绑定监听事件
        在ie及ie8以下,用ele.attachEvent(on+事件名,fn);给元素绑定监听事件
        2.执行先后问题,在谷歌中,先调用/注册,先执行;在ie8及以下先调用/注册,后执行

  --注--
        事件监听的兼容性处理函数
        function bindEvent(ele,eventName,fn){
              if ( window.addEventListener ){
                    return ele.addEventListener(eventName,fn);
              } else {
                    return ele.attachEvent("on"+eventName,fn);
              }
        }
上一篇:MySQL触发器trigger


下一篇:pgsql 日常查询