addEventListener之handleEvent
addEventListener() 方法是将指定的事件监听器注册到目标对象上,当该对象触发指定的事件时,指定的回调函数就会被执行。语法:
element.addEventListener(type, listener[, useCapture]);
其中listener:当指定的事件类型发生时被通知到的一个对象。该参数必须是实现EventListener接口的一个对象或函数。即,第二个参数除了可以传入函数外,还可以传入对象。
interface EventListener {
// 注意:该接口属于DOM2, 所以IE6~IE8不能直接使用哦~
void handleEvent(Event evt);
};
1 var obj = {
2 name: 'foo',
3 handleEvent: function() {
4 alert('click name='+ this.name);
5 }
6 };
7 document.body.addEventListener('click', obj, false);
1 document.body.addEventListener('click', function() {
2 console.log(this == document.body); // output: true
3 }, false);
1 var obj = {
2 name: 'foo',
3 handleEvent: function() {
4 alert('click name='+ this.name);
5 }
6 };
7
8 document.body.addEventListener('click', obj, false);
9
10 function changeHandler() {
11 obj.handleEvent = function() {
12 alert("change the click handle!");
13 };
14 }
15
16 // 5秒后动态改变事件处理函数
17 setTimeout(function() {
18 changeHandler();
19 }, 5000);
1 var obj = {
2 name: 'foo',
3 handleEvent: function(e) {
4 switch(e.type) {
5 case "click":
6 console.log("click event");
7 break;
8 case "mousedown":
9 console.log("mousedown event");
10 break;
11 }
12 }
13 };
14
15 document.body.addEventListener('click', obj, false);
16 document.body.addEventListener('mousedown', obj, false);
这样可以把不同事件的处理逻辑放到一起,根据事件类型区分即可,而不用为每个事件类型定义不同的处理函数了。
因为处理逻辑都在同一对象中,也使程序更加“内聚”了。
有理解错误的地方,还望大家多多指教~
addEventListener之handleEvent的更多相关文章
- 关于 addEventListener 和 handleEvent 方法
使用 addEventListener 可以绑定事件,并传入回调函数. Mozilla 0.9.1 和 Netscape 6.1 之后的版本不但支持传递函数引用,也都允许直接把拥有 handleEve ...
- 【译】addEventListener 第二个参数
这是原文链接:Our Backwards DOM Event Libraries 浏览器APIs 先简单回顾一下各个浏览器提供了哪些绑定事件的接口. IE浏览器提供了element.attachEve ...
- HTML5 学习总结(三)——本地存储
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- 前端试题本(Javascript篇)
JS1. 下面这个JS程序的输出是什么:JS2.下面的JS程序输出是什么:JS3.页面有一个按钮button id为 button1,通过原生的js如何禁用?JS4.页面有一个按钮button id为 ...
- HTML5 学习笔记(三)——本地存储
目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...
- HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- HTML5 ——本地存储
目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...
- HTML5学习总结——本地存储
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- drag file upload xhr 拖拽异步上传文件
<div id="droptarget" style="width: 500px; height: 200px; background: silver"& ...
随机推荐
- 要开始深入VMM了。
得到一个VMM机器所有的节点状态 Quick one-liner to generate a CSV of virtual machines, sorted by their hosts. Repor ...
- 了解运行时类型信息(RTTI)
RTTI需要引用单元TypeInfo GetPropInfo 函数用于获得属性的 RTTI 指针 PPropInfo.它有四种重载形式,后面三种重载的实现都是调用第一种形式.AKinds 参数用于限制 ...
- bzoj2730
首先不难想到要先求割顶,求割顶的方法白书上有讲解由于是一个矿崩塌,所以假如一个连通块连接了两个以上割顶,那么这个连通块内显然是不用设出口的连接块只连接了一个割顶,那么出口可以设在这个连通块内任意位置由 ...
- COJ 3007 Mr.Yang的小助手
传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=1037 试题描述: 信息学社团已经逐渐发展壮大,成员也越来越多.现在,有n个 ...
- Linux企业级开发技术(5)——libevent企业级开发之简介
Libevent是一个用于编写高速可移植非阻塞IO应用的库,它的设计目标是: 可移植性:使用libevent编写的程序应该可以在libevent支持的所有平台上工作.即使没有好的方式进行非阻塞IO,l ...
- LNMP一键安装脚本
#!/bin/bash #LNMP(Fastcgi) #CentOS + MySQL 5.5 #-- iptables -F iptables -X iptables -Z iptables -A I ...
- 进项税额_MBA
进项税额 目录 [显示] [编辑] 什么是进项税额 进项税额是指纳税人购进货物或应税劳务所支付或者承担的增值税税额.所说购进货物或应税劳务包括外购(含进口)货物或应税劳务.以物易物换入货物.抵偿债 ...
- Swap Nodes in Pairs——LeetCode
Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2-&g ...
- HDOJ(HDU) 2153 仙人球的残影(谜一样的题、、、)
Problem Description 在美丽的HDU,有一名大三的同学,他的速度是众所周知的,跑100米仅仅用了2秒47,在他跑步过程中会留下残影的哎,大家很想知道他是谁了吧,他叫仙人球,既然名字这 ...
- 迷宫 maze
1 #include <stdlib.h> #include <stdio.h> #define stackinitsize 50 #define stackincrement ...