事件监听addEventListener()和removeEventListener() ---------1

一直想写一个原生事件监听的记录,方便以后看,不愿意写主要是事件监听的单词太长,记起来好难记每次都要查,这次把知道的写完了,来这里查好了,以后要是理解的更透彻了,就再补全好了

首先,DOM0级事件和DOM2级事件

给一个元素添加事件有三种方法

HTML

<input type="button" value=‘button1‘ id=‘btn1‘ />
<input type="button" value=‘button2‘ id=‘btn2‘ />
<input type="button" value=‘button3‘ id=‘btn3‘ onclick="alert(‘我是btn3‘)" />

对于btn3的按钮,事件是直接加到元素标签内的,好像叫html事件,缺点就是没有分离吧

DOM0级事件

//添加事件
var btn1=document.getElementById(‘btn1‘);
btn1.onclick=function(){
    alert(‘我是btn1‘)
}
//解除事件
btn1.onclick=null;

直接取到btn1,给他添加conclick事件,缺点只能添加一个事件,如果再添加,会覆盖第一个事件

DOM2级事件

//添加事件
var btn2=document.getElementById(‘btn2‘);
function box(){alert(‘我是btn2‘);}
btn2.addEventListener(‘click‘,box,false);
//解除事件
btn2.removeEventListener(‘click‘,box,false);

添加事件用  addEventListener(什么事件、做什么事、false);      false好像是事件冒泡阶段 对应的 true事件捕获阶段,一般我这种菜鸟用不到true,没试过,反正一律写false

删除事件用  removeEventListener(什么事件、做什么事、false);

ps:添加事件和删除事件,必须和添加的时候相同才能移除,不然清不掉。

好像挺简单,真的要是这样就好了,这个addEventListener和removeEventListener有兼容问题,好像是IE8以下不好使,所以还有另外的单词要记

attachEvent 和 detachEvent,这个好像是IE专属,

用法

//添加事件
var btn2=document.getElementById(‘btn2‘);
function box(){alert(‘我是btn2‘);}
btn2.attachEvent(‘onclick‘,box);
//解除事件
btn2.detachEvent(‘onclick‘,box);

没有第三个参数是因为IE8以前只支持事件冒泡,另外需要记住,这里是onclick,所有的事件都要加on,低级的浏览器事比较多

好了,要记住这四个单词

addEventListener、removeEventListener、attachEvent、detachEvent

------------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------------------------------

要兼容所有浏览器,就做判断,谁有能力,谁做事

var btn2=document.getElementById(‘btn2‘);
function box(){alert(‘我是btn2‘);}
var eventUtil={
       // 添加事件
    addHandler:function(element,type,handler){         ////三个参数分别为元素、事件、做什么事(方法)
         if(element.addEventListener){                 //如果支持element.addEventListener方法就用addEventListener
           element.addEventListener(type,handler,false);
         }else if(element.attachEvent){                //如果支持element.attachEvent方法就用attachEvent
           element.attachEvent(‘on‘+type,handler);
         }else{
           element[‘on‘+type]=handler;                 //如果都不支持,那就用DOM0级的方法
         }
    },
    // 删除事件                                        //同上
       removeHandler:function(element,type,handler){
         if(element.removeEventListener){
           element.removeEventListener(type,handler,false);
         }else if(element.detachEvent){
                 element.detachEvent(‘on‘+type,handler);
         }else{
           element[‘on‘+type]=null;
         }
    }
}
eventUtil.addHandler(btn2,‘click‘,box);
eventUtil.removeHandler(btn2,‘click‘,box);

封装了一个方法,以后可以直接拿过来用

时间: 2024-10-26 21:51:53

事件监听addEventListener()和removeEventListener() ---------1的相关文章

js事件监听-addEventListener (w3c标准) 和 attachEvent(ie)

研究了一个小时,没看懂这两个属性 window.onload = function(){ var oDiv = document.getElementById("J_myDiv"); //找到对象 oDiv.onclick = function(){ //设置事件监听函数 alert("click"); }} 缺点:1.添加单一事件 2.不能删除事件 第二:IE中监听函数 var oDiv; function fnClick(){ alert("click

[转]addEventListener() 方法,事件监听

转载  白杨-M  http://www.cnblogs.com/baiyangyuanzi/p/6627401.html addEventListener() 方法,事件监听 你可以使用 removeEventListener() 方法来移除事件的监听. 语法 element.addEventListener(event, function, useCapture); 第一个参数是事件的类型 (如 "click" 或 "mousedown"). 第二个参数是事件触

浏览器默认事件,事件监听,事件委托

浏览器的常见默认行为 图片,文字可以脱出爱 a标签可以进行跳转 右键是菜单 submit可以进行提交 右键菜单触发,可以作为一个事件 document.oncontext=function(e){ alert(1); } 可以阻止浏览器默认行为 return false;    可以实现,但不推荐使用,老师就是这么说的. 还有就是时间对象提供的方法:e.preventDefault()   或e.returnValue=false;后者为了兼容该死的IE低版本 例: DOM,一般的事件都是0级事

js如何实现事件监听和解决兼容性

一.为什么需要事件监听? 我们可不可以为同一对象的同一事件绑定多个事件处理程序呢? 通过行内绑定和动态绑定是不可以的,但是可以通过事件监听来实现. window.onload = function() { // 动态绑定 document.getElementById('btn').onclick = function() { alert('first'); } // 动态绑定 document.getElementById('btn').onclick = function() { alert

html屏幕旋转事件监听

近期做微信服务号开发,在做图片展示的时候需要横竖屏的检测实现图片大小不同的展示. 添加屏幕旋转事件侦听,可随时发现屏幕旋转状态(左旋.右旋还是没旋). 摘自:http://bbs.phonegap100.com/thread-28-1-1.html //js 判断屏幕是否旋转 4. 屏幕旋转事件:onorientationchange 添加屏幕旋转事件侦听,可随时发现屏幕旋转状态(左旋.右旋还是没旋).例子: // 判断屏幕是否旋转 function orientationChange() {

html学习 - javascript事件监听以及addEventListener参数分析

事件监听 在Javascript中事件的监听是用来对某些操作做出反应的方法.例如监听一个按钮的pressdown, 或者获取鼠标左键按下时候鼠标的位置.这些都需要使用监听来完成.监听的函数很简单:addEventListener. 这里解释一下一个网页的嵌套关系:最外层:window 包含:document 包含:html 包含: body 包含:div等等... addEventListener监听方法 按钮监听事件响应 首先我们需要获取一个按钮的handle,获取的方法很简单,代码如下: v

(12)JavaScript之[事件][事件监听]

事件 1 /** 2 * 事件: 3 * onload 和 onunload 事件在用户进入或离开页面时被触发 4 * 5 * onchange事件常结合对输入字段的验证来使用 6 * onmouseover 和 onmouseout 事件可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数. 7 * 8 * onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分.首先当点击鼠标按钮时, 9 * 会触发 onmousedown 事件,当释放鼠标

JS 事件绑定、事件监听、事件委托详细介绍

事件绑定 要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数. 在DOM中直接绑定事件 我们可以在DOM元素上绑定onclick.onmouseover.onmouseout.onmousedown.onmouseup.ondblclick.onkeyd

事件委托与事件监听

事件委托: 给一些子级元素添加事件过多,所以直接给他们的父级添加一个事件: window.onload = function(){ var oBox = document.getElementById("box"); oBox.onclick = function (ev) { var ev = ev || window.event;//获取目标的对象 var target = ev.target || ev.srcElement;..获取目标 if(target.nodeName.t