事件

事件

JavaScript的概念:js是具有一定面向对象能力的基于事件驱动的,并且是具备一定安全性客户端脚本语言(弱类型语言);

1.事件对象

  • 默认浏览器会把事件触发的对应信息当做实参(第一个参数)进行传递给事件处理函数(IE6~8不兼容的)

  • 当前事件触发,浏览器会把当前事件触发对应的信息(事件类型,事件源,位置…)保存到window的event属性中

    document.body.onclick = function (ev) {
    //ev:默认浏览器会把事件触发的对应信息当做实参(第一个参数)进行传递给事件处理函数(IE6~8不兼容的)
    
    //默认事件处理函数触发,事件相关信息通过实参进行传递  不兼容做兼容处理
    // 事件对象的兼容处理 
    ev = ev || window.event;
    // console.log(ev);
    
    //ev.target
    //事件源的兼容处理
    
    // console.log(ev.target);  //IE6-8不啊金融
    // console.log(ev.srcElement);
    var target = ev.target || ev.srcElement;
    console.log(target);
    
    // 事件对象的相关属性
    //1.altKey /  ctrlKey  /  shiftKey  默认值是false  在事件触发的时候按下对应的键  值就是true
    console.log(ev.altKey, ev.ctrlKey, ev.shiftKey);
    if (ev.altKey) console.log('111');
    
    //2.位置信息
    //clientX  / clientY   获取浏览器首屏区域点击的位置信息(距离可视区域左上角的)
    console.log(ev.clientX, ev.clientY);
    
    //pageX / pageY  获取当前位置距离内容的的高度  (相当于clientX/clientY + scrollLeft / scrollTop) (存在兼容问题)  IE 6 -8 不兼容
    console.log(ev.pageX, ev.pageY);
    
    //screenX / screenY  获取当前位置距离屏幕的信息
    console.log(ev.screenX, ev.screenY);
    
    //3.事件类型  
    console.log(ev.type);
    }
    

2.事件绑定与取消

事件绑定

  • DOM0

    • DOM0级事件绑定
      • 元素对象.on+事件名称
    • DOM0级事件取消
      • 元素对象.on+事件名称 = null;
  • DOM2

    • DOM2 级事件绑定

    • 元素对象.addEventListener(evenType,callBack,boolean);

      • evenType:事件类型 事件去掉on
      • callBack:回调函数 (函数)
      • boolean:布尔值 默认值false 在冒泡阶段发生 true:在捕获阶段发生
      var box = document.getElementById("box");
      //传递匿名函数
      // box.addEventListener("click", function () {
      //     console.log(111);
      // });
      // box.addEventListener("click", function () {
      //     console.log(222);
      // });
      // box.addEventListener("click", function () {
      //     console.log(333);
      // });
      
      function num1(one) {
          console.log(111);
          console.log(one);
      }
      
      function num2(two) {
          console.log(222);
          console.log(two);
      }
      
      function num3(three) {
          console.log(333);
          console.log(three);
      }
      
      // box.addEventListener("click", num1);
      // box.addEventListener("click", num2);
      // box.addEventListener("click", num3);
      
      
      box.addEventListener("click", function () {
          num1(100);
      });
      box.addEventListener("click", function () {
          num2(200);
      });
      box.addEventListener("click", function () {
          num3(300);
      });
      
    • DOM2事件绑定的额兼容处理

      • IE6-8: 元素对象.attachEvent(on+事件类型,事件处理函数);
      //DOM2事件绑定的兼容处理  是IE独有的
      //元素对象.attachEvent('on' + eventType,callBakc);
      function eventBind(eleObj, eventType, callBack, boolean) {
          if (eleObj.addEventListener) {
              eleObj.addEventListener(eventType, callBack, boolean);
          } else {
              eleObj.attachEvent('on' + eventType, callBack);
          }
      }
      
    • DOM2级 取消事件绑定

      • 元素对象.removeEventListener(“事件名称”,事件处理函数,布尔值);
      • (IE6-8不啊兼容)
    • DOM2级 取消事件绑定兼容处理

      • 元素对象.detachEvent(‘on’+事件名称,事件处理函数名称);
      //DOM2事件取消事件绑定兼容处理
      function unEventBind(eleObj, eventType, callBack) {
          if (eleObj.removeEventListener) {
              eleObj.removeEventListener(eventType, callBack);
          } else {
              eleObj.detachEvent('on' + eventType, callBack);
          }
      }
      

3.事件的传播机制

事件触发流程

NONE: 0CAPTURING_PHASE: 1   捕获阶段   从顶层对象向内查找的过程
AT_TARGET: 2  在目标阶段
BUBBLING_PHASE: 3  冒泡阶段   向外传播的过程

4.阻止事件冒泡

ev.stopPropagation ? ev.stopPropagation():ev.cancelBubble = true;

5.阻止事件的默认行为

ev.preventDefault ? ev.preventDefault() : ev.returnValue = false;

6.键盘事件

键盘事件 onkeydown 按下 ankeypress按着 onkeyup 抬起

document.onkeydown = function (ev) {
ev = ev || window.event;
console.log(ev); //KeyboardEvent{...}


// 事件对象的相关属性
//1.altKey /  ctrlKey  /  shiftKey  默认值是false  在事件触发的时候按下对应的键  值就是true
console.log(ev.altKey, ev.ctrlKey, ev.shiftKey);
if (ev.ctrlKey) console.log(111);

//2.键盘码 keyCode       onkeydown 或   onkeyup 对应的都是ASCII值并且不区分大小写  默认是大写的ASCII值
// console.log(ev.key,ev.keyCode);

//onkeypress:对应的键盘码也是ASCII值  区分大小写
//console.log(ev.key,ev.keyCode);

//3.key  键码    不兼容(IE6~8)没有这个属性值是undefined
console.log(ev.key);
}

7.滚轮事件

IE 或 谷歌 使用DOM0 元素对象.onmousewheel DOM2去掉on

获取绑定滚轮事件必须使用DOM2事件事件,并且对应的事件名是 DOMMouseScroll

//IE或谷歌
 元素对象.onmousewheel = 事件处理函数;
//火狐
 元素对象.addEventListener("DOMMouseScroll",事件处理函数);

滚轮事件方向的兼容处理

// 判断滚轮的方向(兼容的处理)
function whellEvent(ev) {
    //滚轮方向的
    //IE或谷歌  事件对象.wheelDelta  
    //往前滚 : 120  往后滚:-120  并且火狐不兼容  是undefined   
    // console.log(ev.wheelDelta);

    // 火狐下  ev.detail  
    // 往前滚 : -3  往后滚:3  
    // console.log(ev.detail);
    if (ev.wheelDelta) { //成立  IE 或 谷歌
        return ev.wheelDelta;
    } else { //火狐   
        return ev.detail * -40;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值