首先了解一下什么是事件?事件是web浏览器通知应用程序发生了什么事情。我们可以通过一些方式注册事件用来监听一些我们需要处理的事件。事件包含一下一些属性:
    事件类型:用来说明是什么类型事件的字符串
    事件处理程序:监听了某个事件想让他做的事情
    事件对象:特定的事件类型,有不同的属性
    事件传播:一般情况下是会经历捕获->目标对象->冒泡的过程,IE8之前的浏览器不支持事件捕获
 
    下面简单介绍一下事件有哪些类型,文档加载和准备就绪事件、鼠标事件、鼠标滚轮事件、拖放事件、键盘事件和文本输入事件。随着web平台的发展,事件集合越来越大,这些新的事件主要来自:html5规范和移动设备的触摸和手势事件。
 
    介绍了事件有哪些类型之后,接着我们聊聊注册事件处理程序。我们知道注册事件处理程序有两种基本方式:第一种出现在web初期,给事件目标对象或文档元素设置属性(0级事件模型);第二种方式是将事件处理程序传递给对象或者是元素(2级事件模型)。
 
    0级事件模型:

//直接写在属性里
<button id="btn" onclick="alert('click me')">clicke me</button>
//通过JS绑定到元素上
document.getElementById('btn').onclick = function() {
alert('click me');
}

  

2级事件模型
function clickHandler = function () {
alert('click me');
}
//非IE浏览器 /*
参数说明:第一个参数是事件类型,第二个参数是处理程序,第三个参数是是否在捕获阶段执行
阻止事件传播:Event.stopPropagation();
阻止默认事件:Event.preventDefault();
*/
document.getElementById('btn').addEventListener('click', clickHandler, false ); //注册
document.getElementById('btn').removeEventListener('click', clickHandler, false ); //清除 //IE浏览器
/*
参数说明:第一个参数是事件类型,第二个参数是处理程序;由于IE不支持捕获,所以没有第三个参数
阻止事件传播:window.event.cancleBuble();
阻止默认事件:window.event.returnValue = false;
*/
document.getElementById('btn').attachEvent('onclick', clickHandler); //注册
document.getElementById('btn').detachEvent('onclick', clickHandler); //解除
    注:
    1.虽然所有的事件都受事件传播的捕获阶段的支配但并非所有事件都冒泡;一般来说原始输入事件冒泡,高级语义事件不冒泡(blur、focus)
    2.addEventListener注册的事件是由顺序的,attachEvent无顺序
 
    利用event.target和冒泡可以实现事件代理。

javascript的事件处理的更多相关文章

  1. 20个优秀的 JavaScript 键盘事件处理库

    键盘事件是 Web 开发中最常用的事件之一,通过对键盘事件的捕获和处理可以提高网站的易用性和交互体验.下面,我们向大家介绍收集的20款优秀的 JavaScript 键盘事件处理库,帮助开发人员轻松处理 ...

  2. 20个优秀的JavaScript 键盘事件处理库

    键盘事件是 Web 开发中最常用的事件之一,通过对键盘事件的捕获和处理可以提高网站的易用性和交互体验.下面,我们向大家介绍收集的20款优秀的 JavaScript 键盘事件处理库,帮助开发人员轻松处理 ...

  3. JavaScript之事件处理详解

    一.事件传播机制 客户端JavaScript程序(就是浏览器啦)采用了异步事件驱动编程模型.当文档.浏览器.元素或与之相关的对象发生某些有趣的事情时,Web浏览器就会产生事件(event).如果Jav ...

  4. javascript IE事件处理及跨浏览器事件处理程序

    一.javascript事件处理中 addEventListener/removeEventListener 用于绑定事件和解除事件,但大多用于chrome/火狐/IE9这些比较高级的浏览器中,IE8 ...

  5. JavaScript中事件处理

    先看看下面一道题目,请评价以下代码并给出改进意见: if (window.addEventListener) {//标准浏览器 var addListener = function(el, type, ...

  6. 二、JavaScript语言--事件处理--DOM事件探秘--下拉菜单

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 二、JavaScript语言--事件处理--DOM事件探秘

    第一章 事件流 事件:是文档或浏览器窗口中发生的.特定的交互瞬间.JavaScript和HTML之间的交互都是通过事件来实现的. 事件流:描述的是从页面中接受事件的顺序 IE:事件冒泡流 Netsca ...

  8. 关于JavaScript的事件处理一些知识

    <JS事件处理> Event对象详细信息:http://www.w3school.com.cn/jsref/dom_obj_event.asp JS原生支持3中绑定事件方式: 1.以标签属 ...

  9. javascript之事件处理

    一般事件 onclick                       鼠标点击时触发此事件 ondblclick                  鼠标双击时触发此事件 onmousedown    ...

  10. 编写可维护的JavaScript之事件处理

    规则1:隔离应用逻辑 这会让你的代码容易调试 规则2:不要分发事件对象 event对象包含了太多信息 // a good example var handlePopup = { // 事件句柄,处理所 ...

随机推荐

  1. autoitv3点击windows界面

    在自动化测试过程中会遇到如下windows安全认证,需要输入账号和密码,这个认证对话框不属于element元素.无法用selenium操作,需要用autoitv3操作,输入账号密码后,再进行web元素 ...

  2. python学习Processing

    # -*- coding: utf-8 -*-__author__ = 'Administrator'import bisect#排序说明:http://en.wikipedia.org/wiki/i ...

  3. Vagrant入门[转]

    Vagrant是一个简单易用的部署工具,用英文说应该是orchestration tool.它能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境. Vagrant的基本工作原理大致如下: ...

  4. [Angular 2] Injecting a Service

    Using Services in Angular 2 is very simple. This lesson covers how to create a simple class as a Ser ...

  5. 畅通project

    原文请訪问:p=174">http://xiaoshig.sinaapp.com/?p=174 畅通project Time Limit:2000MS     Memory Limit ...

  6. Citrix 服务器虚拟化之十 Xenserver高可用性HA

    Citrix 服务器虚拟化之十 Xenserver高可用性HA HA是一套全自动功能设计,规划.它可以安全地恢复出现问题的XenServe 主机.例如物理破坏网络或主机的硬件故障,HA可确保无需任何人 ...

  7. 如何让div横向排列

    方法一: 一般情况,默认的div是写一个换一行,那么如何定义两个div横向排列而不换行呢? div默认的display属性是block.所以每一个div都是新的一行,现在把display换成inlin ...

  8. Sass@规则

    @importSass 支持所有 CSS3 的 @ 规则, 以及一些 Sass 专属的规则,也被称为“指令(directives)”.Sass 扩展了 CSS 的 @import 规则,让它能够引入 ...

  9. oracle数据库连接

    ///宁采花 8:37:39 /// <summary> /// 获取数据链接 /// </summary> /// <returns></returns&g ...

  10. cocoa pods 安装 转载

    1.打开终端 终端输入  $ruby -v  查看ruby的版本 打印代码: ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64- ...