`

DOM 事件

 
阅读更多

一、事件流

事件流描述的是从页面中接受事件的顺序。

 

IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流

 

事件冒泡:

   事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档)。------由内到外

 事件捕获:

 不太具体的节点应该更早的接收到事件,具体的节点最后接收到事件。----由外到内

 

 

事件处理程序:

     HTML事件处理程序:

         缺点:html和js 紧密的耦合在一起。

     DOM0级事件处理程序:

         是一种较传统的方式,把一个函数赋值给一个事件处理程序的属性。在第四代web浏览器中出现。

        优势:  目前支持的比较好,用的比较多。简单,跨浏览器的优势。 

          元素.事件=null;//删除DOM0级事件

         

     DOM2级事件处理程序(IE不支持):

        定义了两个方法:用于处理指定和删除时间处理程序的操作。

         addEventListener()和removeEventListener():接收三个参数:要处理的事件名(不带on)、作为事件处理程序的函数、boolean(true:在捕获阶段处理事件处理程序。false:在冒泡阶段处理事件处理程序。)

         可以添加多个事件处理程序。按顺序执行。

 

       IE事件处理程序:

         添加事件和删除事件分别是:attachEvent()和detachEvent():接收两个参数:要处理的事件名(必须带on)、作为事件处理程序的函数。

        不使用第三个参数的原因是:IE8及其更早的浏览器版本只支持事件冒泡。所以默认冒泡。

        支持IE事件处理程序的浏览器:IE和OPERA.

        

       跨浏览器的事件处理程序:

          var  eventUtil={

               //添加

             addHandler:function(element,type,handler){

                 //是否支持dom2级

                 if(element.addEventListener){

                       element.addEventListener(type,handler,false);

                 //是否支持ie

                }else if(element.attachEvent){

                       element.attachEvent('on'+type,handler);

                //dom0级

                }else{

                      //js中,所有用.的地方都可以用[]代替。element.onclick===element['onclick']此处不能用.,因此替换为[]

                       element['on'+type]=handler;

                  }

        },

 

        //删除

             delHandler:function(element,type,handler){

                 //是否支持dom2级

                 if(element.removeEventListener){

                       element.removeEventListener(type,handler,false);

                 //是否支持ie

                }else if(element.detachEvent){

                       element.detachEvent('on'+type,handler);

                //dom0级

                }else{

                      //js中,所有用.的地方都可以用[]代替。element.onclick===element['onclick']此处不能用.,因此替换为[]

                       element['on'+type]=null;

                  }

        }

 

}

           

事件对象:

     在触发DOM上的事件时都会产生一个对象。

     事件对象EVENT.

     DOM中的事件对象:

         (1)type  获取事件类型(click,mouseover,mouseout....)

         (2)target  获取事件目标(即事件所在的dom元素)

         (3)stopPropagation()    阻止事件冒泡

         (4)preventDefault()     阻止事件的默认行为

                     eg:<a href='#'>超链接</a> 默认行为是点击跳转     

 

       IE中的时间对象:

          (1)type  获取事件类型(click,mouseover,mouseout....)     

          (2)srcElement 获取事件目标(即事件所在的dom元素)

          (3)cancelBubble属性   阻止事件冒泡  true 阻止冒泡,false 不阻止冒泡

          (4)returnValue属性    阻止事件的默认行为        false 阻止事件默认行为

                     eg:<a href='#'>超链接</a> 默认行为是点击跳转   

    

            eventUtil中再添加以下方法:

                getEvent:function(event){

                    //在ie8 之前的浏览器,必须用window.event才能获取到event

                    return event?event:window.event;

                 },

                 getType:function(event){

                         return event.type;

                       },

                 getElement:function(event){

                      return event.target || event.srcElement;

                   },

 

                 //阻止默认事件

                 preventDefault:function(event){

                          if(event.preventDefault){

                                event.preventDefault();

                           }else{

                              event.returnValue=false; 

                            }

                     },

                     stopPropagation:function(event){

                          if(event.stopPropagation){

                             event.stopPropagation();  

                            }else{

                             event.cancelBubble=true;           

                            }

                           }

             

事件类型:

       鼠标事件,键盘事件。

    

      键盘事件:

        keyDown:按下键盘上任意键触发,如果按住不放的话,会重复触发此事件

        keyPress:按下键盘上字符键触发,如果按住不放,会重复触发此事件。

        keyUp:       释放键盘上的键时触发。

 

      event 对象的keyCode属性用于得到键盘对应键的键码值

      

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    DOM事件(ppt) DOM事件(ppt) DOM事件(ppt)

    DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM事件(ppt)DOM...

    JavaScript之DOM事件(源代码)

    JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源代码)JavaScript之DOM事件(源...

    DOM事件总结(教辅)

    DOM事件总结(教辅)DOM事件总结(教辅)DOM事件总结(教辅)DOM事件总结(教辅)DOM事件总结(教辅)DOM事件总结(教辅)DOM事件总结(教辅)DOM事件总结(教辅)DOM事件总结(教辅)DOM事件总结(教辅)DOM事件...

    手写DOM事件模型

    **手写DOM事件模型** 在Web开发中,DOM(Document Object Model)事件模型是JavaScript与网页交互的关键。它允许我们监听、处理和触发各种用户或浏览器产生的事件,如点击、鼠标移动、键盘输入等。本篇文章将深入...

    js逆向实战之DOM事件断点调试

    通过这种技术,我们可以对目标网页的DOM事件进行断点调试,从而获取更多关于事件触发和处理的信息。在本文中,我们将详细阐述 DOM 事件断点调试的原理和应用。 什么是 DOM 事件断点调试? DOM 事件断点调试是指在 ...

    DOM事件的区别

    ### DOM事件的区别详解 在Web开发中,DOM(Document Object Model)事件处理是与用户交互的重要方式之一。本文将从DOM0级事件处理、DOM2级事件处理以及事件流、事件委托等方面进行深入探讨,帮助读者更好地理解这些...

    JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题.docx

    在JavaScript中,DOM事件处理程序的封装是跨浏览器兼容性的一个关键步骤,因为不同的浏览器对事件处理有不同的实现。本文主要讨论了在将DOM事件处理程序封装到名为`event.js`的文件时可能出现的低级错误,并提供了...

    轻量级的DOM事件委托小于1KB

    标题 "轻量级的DOM事件委托小于1KB" 指的是一个小型的JavaScript库或技术,它实现了DOM(文档对象模型)事件委托功能,并且整个实现的代码大小非常小,不超过1KB。在Web开发中,DOM事件委托是一种优化性能的策略,...

    59、文件上传dom事件处理1

    Symfony 5 文件上传 DOM 事件处理 Symfony 5 全开发视频教程代码仓库提供了一个文件上传的示例代码,通过点击按钮将文件上传到表单中。在这个示例中,我们可以学习到如何使用 JavaScript 获取表单的 DOM 元素,...

    非常小的库,使使用DOM事件发射器API(和其他API)更容易一些。.zip

    标题中的“非常小的库,使使用DOM事件发射器API(和其他API)更容易一些”指的是一个轻量级的JavaScript库,它的主要目的是简化对DOM(文档对象模型)事件发射器API以及其他相关API的使用。在Web开发中,DOM事件是...

    DOM事件流示意图

    DOM事件流的示意图,清晰的展示了DOM事件流的捕获过程,以及冒泡过程

    DOM事件流,冒泡 | 捕获 | 委托 ,详解

    目录(一)DOM事件流① 定义② 图解③ 历史(二)冒泡(三)捕获(四)在不同的阶段执行事件(五)提高内存和性能 — 事件委托① 实例② 优点 (一)DOM事件流 ① 定义 DOM事件流包括三个阶段: 捕获阶段 目标阶段 ...

    poetries#FE-Interview-Questions#DOM事件的总结1

    DOM事件的级别DOM事件的级别,准确来说,是DOM标准定义的级别。DOM2的写法:【重要】上面的第三参数中,true表示事件在捕获阶段触发,false表示事件

    这次一定彻底弄懂DOM事件机制

    下文主要通过一个例子带你 分析DOM事件的传递、事件处理 ,然后在此基础上再 深入总结对事件监听的优化方案 ,最终总结下DOM事件机制 在开源框架中的实战应用 。 一、从实例看事件传递 以下面这个普通的html...

    深入理解JS DOM事件机制

    JavaScript DOM事件机制是Web开发中的核心概念之一,它关乎如何响应用户与网页元素的交互。在深入理解这一机制前,我们需要了解三个关键术语:事件流、事件冒泡和事件捕获。 1. 事件流: 事件流描述了事件在HTML...

    读书笔记:Javascript基础总结Dom事件原生函数正则.zip

    读书笔记:Javascript基础总结Dom事件原生函数正则

Global site tag (gtag.js) - Google Analytics