DOM事件总结(事件处理程序的类型及浏览器的兼容性)

事件处理:

1、HTML事件处理程序

例子:

<input type="button" id="btn" value="click me" onclick="alert(‘Hello!‘);">

或者:

<input type="button" id="btn" value="click me" onclick="show()">
<script>
    function show(){
        alert("Hello world!");
    }
</script>

缺点:HTML与JavaScript代码紧密耦合在一起,不方便修改。

2、DOM零级处理程序

例子:

<input type="button" id="btn" value="click me">
<script>
    var btn=document.getElementById("btn");
    btn.onclick=function(){
        alert("....");
    }
</script>

这段代码的作用是添加点击事件,若要取消点击事件,只需"btn.onclick=null;"即可。

3、DOM二级事件处理程序

  定义了两个方法:addEventListener()和removeEventListener(),分别是用于指定和删除事件处理程序的操作。

  两种方法都有三个参数:

  (1)要处理的事件名;

  (2)事件处理程序的函数;

  (3)布尔值:true(在捕获事件中调用);false(在冒泡事件中调用)。

例子:

var btn=document.getElementById("btn");
btn.addEventListener(‘click‘,function(){alert(‘Hello‘);},false);

要删除只能用removeEventListener(),而不能用“....=null”。

4、IE事件处理程序

  attachEvent()和detachEvent(),分别是添加和删除事件。

  两个参数:

  (1)要处理的事件名;

  (2)事件处理程序的函数。

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

  用法:

btn.attachEvent(‘onclick‘,function(){.....});

注意是"onclick" "onmouseover" 还是用"click" "mouseover"等,有没有加"on"。

5、跨浏览器的事件处理程序

  做法是:所有的事件处理程序封装在一个对象内。

  如下代码:

/*
* @Author: 陈陈陈
* @Date:   2017-09-03 10:18:07
* @Last Modified by:   陈陈陈
* @Last Modified time: 2017-09-03 12:19:34
*/
var  eventUtil{

    /*添加事件处理程序    */
    addHandler:function(element,type,handler){//参数表元素、事件类型、函数
        if(element.addEventListener){//DOM 2级事件处理程序
            element.addEventListener(type,handler,false);//false表冒泡事件调用;true表捕获事件调用
        }else if(element.attachEvent){//IE事件处理程序
            element.attachEvent(‘on‘+type,handler);//没有第三个参数的原因是:IE8及更早的浏览器版本只支持事件冒泡
        }else{//DOM 0级事件处理程序
            element[‘on‘+type]=handler;
        }
    },

    /*删除事件处理程序    */
    removeHandler:function(element,type,handler){//删除事件处理程序,参数表元素、事件类型、函数
        if(element.removeEventListener){//DOM 2级事件处理程序
            element.removeEventListener(type,handler,false);//false表冒泡事件调用;true表捕获事件调用
        }else if(element.detachEvent){//IE事件处理程序
            element.detachEvent(‘on‘+type,handler);//没有第三个参数的原因是:IE8及更早的浏览器版本只支持事件冒泡
        }else{//DOM 0级事件处理程序
            element[‘on‘+type]=null;
        }
    },

    /*以下一些方法是关于事件对象的获取
      改善浏览器的兼容性,将DOM事件对象和IE事件对象合并在一起
      1、DOM的事件对象:
      (1)type:事件类型
      (2)target:事件目标
      (3)stopPropagation()方法:阻止事件冒泡
      (4)preventDefault()方法:阻止事件的默认行为

      2、IE中的事件对象:
      (1)type:事件类型
      (2)srcElement:事件目标
      (3)cancelBubble属性:阻止事件冒泡 true表示阻止冒泡,false表示不阻止
      (4)returnValue属性:阻止事件的默认行为
     */

    getEvent:function(event){
        return event?event:window.event;
    },

    getTarget:function(event){
        return target || srcElement;
    },

    stopPro:function(event){
        if(event.stopPropagation){
            event.stopPropagation();
        }else{
            event.cancelBubble=true;
        }
    },

    preventDef:function(event){
        if(event.preventDefault){
            event.preventDefault();
        }else{
            event.returnValue=false;
        }
    },
}
时间: 2024-10-13 02:00:04

DOM事件总结(事件处理程序的类型及浏览器的兼容性)的相关文章

js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象

事件对象    在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包括导致事件的元素.事件的类型,以及其他与特定事件相关的信息.例如,鼠标操作导致的事件对象中,会包含鼠标位置的信息,而键盘操作导致的事件对象中,会包含与按下的键有关的信息.所有浏览器对象都支持event对象,但支持方式不同. DOM中的事件对象 兼容DOM的浏览器会将一个event对象传入到事件处理程序中.无论指定事件处理程序时使用什么方法(DOM0级或DOM2级),都会传入event

事件和事件处理程序

事件:用户或浏览器自身执行的某种动作.诸如:click.load.mouseover等. 事件处理程序(事件侦听器):响应某个时间的函数.以"on"开头. html方法: 某个元素支持的每种事件,都可以使用一个与之相应事件处理程序同名的HTML特性来制定.这个特性的值是可以执行的js代码. 例如:要在按钮被单击时执行一些js,可如下: <input type="button" value="click me" onclick="a

事件对象——DOM中的事件对象

触发DOM上的交互事件会生成一个event对象,用以保存事件的信息.比如鼠标交互的事件会保存鼠标的位置,键盘交互的事件会保存键的值. 1.DOM0级和DOM2级事件处理程序在进行事件处理时都会有一个event对象传入.例如event.type会保存事件类型名称. 2.HTML事件处理程序中的变量event保存有event对象. 3.event对象的属性和方法: 1.bubbles.布尔值,用以表明事件是否冒泡. 2.cancelable.布尔值,用以表明是否可以取消事件的默认行为.通常和prev

JS中的函数、Bom、DOM及JS事件

本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的声明及调用] 1.函数声明的格式: function 函数名(参数1,参数2,参数3,--){//函数体 return 结果; } >>>函数的调用格式: 直接调用:函数调用的格式:函数名(参数一的值,参数二的值,--): 事件调用:事件名=函数名( ); 2.函数声明的几点强调: ①函数名

【使用 DOM】使用事件

1. 使用简单事件处理器 可以用几种不同的方式处理事件.最直接的方式是用事件属性创建一个简单事件处理器(simple event handler).元素为它们支持的每一种事件都定义了一个事件属性.举个例子,onmouseover事件属性对应全局事件mouseover,后者会在用户把光标移动到元素占据的浏览器屏幕的上方时触发.(这是一种通用的模式:大多数事件都有一个对应的事件属性,其名称定义为 on<eventname>) 1.1 实现简单的内联事件处理器 使用某个属性最直接的方式是给它指派一组

Chrome插件Visual Event查看Dom元素绑定事件的利器

找这工具找了好久,统一找着了,开发人员不可多得的好东东,收藏做一下分享. 用Chrome插件Visual Event查看Dom绑定的事件 Visual Event简介 Visual Event是一个开源 Javascript 书签,能提供绑定在DOM元素上的事件调试信息.Visual Event能显示如下信息: 1.哪一个元素有事件绑定 2.某元素上绑定的事件类型 3.事件触发后运行的代码段 4.定义绑定函数的源文件和行号(仅限于WebKit和Opera浏览器) 除了对调试你自己的代码大有用途,

jquery bind 方法一个特点(绑定多个方法到一个dom的某个事件)

目录: [TOC] jquery bind方法介绍 方法声明:bind(type,[data],fn) 方法说明:为每一个匹配元素的特定事件(eg:click)绑定一个事件处理器函数.这个事件处理函数会通过参数方式接收到一个事件对象,可以通过它来阻止(浏览器)默认的行为.如果既想取消默认的行为,又想阻止事件起泡,这个事件处理函数必须返回false. 技巧:多数情况下,可以把事件处理器函数定义为匿名函数. 参数意义 type (String) : 事件类型. data (Object) : (可选

观察者模式 -&gt; dom事件 / 自定义事件 / Promise 我的理解

观察者模式(Observer) 又称作为发布-订阅模式或消息机制,定义了一种依赖关系,解决了主体对象与观察者对象之间通讯和耦合的问题; 观察者模式例子 引用于<JavaScript设计模式> var Observer = (function(){ var _messages = {}; // 监听信息容器 return { /** * 注册监听信息接口 * @param {String} type 监听信息类型 * @param {Function} fn 对应的回调函数 */ regist:

事件注册 DOM事件流 事件对象(常用属性,方法) 事件委派(鼠标,键盘事件对象)

注册事件概述 给元素添加事件,称为注册事件或者绑定事件 注册事件有两种方式:传统方式和方法监听注册方式 传统注册方式:利用 on 开头的事件:例如:onclick:注册事件的唯一性,后面的注册事件会把前面的覆盖 方法监听注册方式:addEventListener()IE9+:IE9以前用 attacthEvent()代替:会按照注册顺序依次执行没有唯一性的问题 addEventListener() 事件监听方式 eventTarget.addEventListener(type, listene