event事件


1. *****event:
   事件: 用户手动触发的,或浏览器自动触发的状态的改变
   事件对象: 在事件发生时,自动创建的,专门封装事件信息的对象。
   事件处理函数: 在事件发生时,自动调用执行的函数
      何时调用事件处理函数: 在事件发生时,自动调用
      如何调用: elem.on事件名()
      如何定义事件处理函数:3种
为 elem.on事件名 赋值一个函数对象
      1. 在HTML中定义事件处理函数的内容:
<elem onXXX="js语句"
        比如: <button οnclick="alert(this)">
        定义时:相当于:
  elem.onXXX=function(){
      eval("js语句");
  }
比如: button.οnclick=function(){//this->button
      eval("alert(this)");
     }
运行时:
 elem.onXXX()
          this: elem


function fun(){alert(this.id)};//this->window
        <button οnclick="fun()"
        相当于:button.οnclick=function(){//this->button
    eval("fun()");
               }


        缺点: 1. 不符合内容与行为分离的原则
              2. 无法动态绑定
              3. 无法同时绑定多个函数对象


      2.在js中使用元素的事件处理函数属性:
elem.onXXX=function(){}
        调用时: elem.onXXX();
          this: elem
        优: 1. 内容与行为分离
            2. 动态绑定,便于维护
        缺: 1. 无法同时绑定多个函数对象
      
      3.使用专门的API绑定事件处理函数
DOM: elem.addEventListener("事件名",函数对象);
调用时: elem.onXXX();
          this: elem
        优: 1. 内容与行为分离
            2. 动态绑定,便于维护
            3. 可同时绑定多个函数对象
        IE8: elem.attachEvent("事件处理函数名",函数对象)


   事件周期:从事件发生,到所有事件处理函数执行完毕的全过程。
       DOM: 3个阶段: 
1. 由外向内 捕获阶段
   捕获:记录所有要执行的事件处理函数
        2. 目标出发: 优先出发目标元素上的事件处理函数
    目标元素: 实际发生事件的元素
        3. 由内向外 冒泡执行
       IE8: 2个阶段: 没有捕获!


   改变事件触发的顺序: 
     设置事件处理函数在捕获阶段就提前执行
     如何设置: addEventListener(xx,xx,capture)
         capture为true: 在捕获阶段提前执行
                为false: 在冒泡阶段执行 (默认)
     只有DOM的addEventListener可修改触发顺序
   IE的attachEvent,没有第三个参数,不能修改事件触发顺序

   事件对象e:
    DOM: event会自动作为事件处理函数的第一个参数传入   
    其实定义事件处理函数时:
elem.onXXX=function(e){
   e->event
        }
elem.addEventListener("xxx",function(e){
   e->event
},false)
    调用时: elem.onXXX(event)


    IE8: window全局有一个属性event,在事件发生时,保存事件对象。
elem.onXXX=function(){
   window.event
        }
    兼容: elem.onXXX=function(e){
   e=window.event||e;
                  IE8       DOM
         }


   取消冒泡和利用冒泡:
   1. 取消冒泡: 本次事件处理函数执行后,阻止继续冒泡触发
如何取消冒泡: 
        DOM: e.stopPropagation()
        IE8: e.cancelBubble=true;  
        兼容:if(e.stopPropagation){//DOM
e.stopPropagation();
             }else{
e.cancelBubble=true;
             }
   2. 利用冒泡: 
     优化: 如果多个子元素都定义了相同的事件处理函数。
         最好只在父元素上定义一次即可!
     为什么: 每绑定一次事件处理函数,其实都是创建一个事件监听对象。创建事件监听越多,网页效率就越低。


     获取目标元素:
DOM: e.target
        IE8: e.srcElement
        兼容:var target=e.target||e.srcElement; 


   取消事件: 如果事件处理函数的执行过程中,遇到问题,不希望事件继续执行,则可取消事件
      DOM: e.preventDefault();
      IE8: e.returnValue=false;   


   事件发生时,鼠标的坐标位置: 见图:xy.png


   移除事件绑定: 
     elem.removeEventListener("事件名",函数对象);
   强调:remove时要求,函数对象必须和add时使用的函数对象完全一样
    只要一个事件处理函数可能被移除,就必须用函数名方式绑定。不能用函数直接量方式。
    如果一个事件没有被移除的可能,才能用函数直接量方式绑定。














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于event事件触发控制是一种常见的编程方法,它允许我们在特定的事件发生时执行代码或触发一些动作。在这种控制下,我们可以定义需要监听的事件,并通过设置相应的回调函数来处理这些事件事件可以是用户的操作,比如点击按钮、键盘输入等;也可以是系统的反应,比如网络请求完成、定时器触发等。在程序中,我们通过注册事件处理函数来捕获这些事件,并在事件发生时执行相应的逻辑或操作。 基于event事件触发控制的编程方式具有以下几个优点: 1. 高效灵活:通过监听事件并异步执行响应函数,可以充分利用计算资源,并提高程序的响应速度和并发能力。 2. 模块化设计:事件触发控制可以帮助我们将程序分解为更小的模块,每个模块专注于处理特定的事件,提高代码的可维护性和可扩展性。 3. 松耦合:通过事件触发控制,事件产生的模块和事件处理的模块可以解耦,降低了模块之间的依赖性,提高了代码的可测试性和重用性。 在具体实现中,我们可以使用各种编程语言或框架提供的事件机制来实现event事件触发控制。比如在JavaScript中,可以使用addEventListener函数来监听DOM事件;在Node.js中,可以使用EventEmitter对象来实现自定义事件的触发和处理。同时,许多GUI编程工具和框架也提供了强大的事件触发控制功能,用于实现用户界面的交互和响应。 总之,基于event事件触发控制是一种强大的编程方法,能够帮助我们设计和实现灵活、高效的程序。通过合理地使用事件和回调函数,我们可以充分利用事件的特性,提升程序的性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值