事件
了解事件
我们提前和浏览器约定好一些行为
当用户在浏览器触发这些行为的时候, 有一个事件处理函数执行
事件三要素
1. 事件源: 在谁的身上绑定事件
2. 事件类型: 什么事件
3. 事件处理函数: 当行为发生的时候, 执行哪一个函数
事件绑定分类
1. dom0 级 事件
事件源.onclick = function () {}
2. dom2 级 事件
2-1. addEventListener()
标准浏览器使用
使用方法: 事件源.addEventListener('事件类型', 事件处理函数)
可以同时给一个事件类型绑定多个事件处理函数
多个事件处理函数的时候, 顺序绑定顺序执行
至少两个参数
2-2. attachEvent()
IE 低版本使用
使用方法: 事件源.attachEvent('on 事件类型', 事件处理函数)
可以同时给一个事件类型绑定多个事件处理函数
多个事件处理函数的时候, 顺序绑定倒叙执行
只有两个参数
这里大家一定要区别一下参数的个数问题;
第一件事就是要先获取元素
var div = document.getElementById('box');
事件的解绑
1. 解绑 dom0 级 事件
赋值的行为执行过一次后,再次给他赋值为 null
2. 解绑 dom2 级 事件
2-1. removeEventListener('事件类型', 要解绑的事件处理函数)
2-2. detachEvent('on 事件类型', 要解绑的事件处理函数)
注意: 如果你想解绑事件, 那么在你绑定事件的时候, 一定要把函数单独书写
写成一个具名函数的形式, 以函数名的形式绑定事件处理函数
3.绑定事件
向一个事件类型身上绑定多个事件处理函数的时候
click: [ 事件处理函数 1, 事件处理函数 2, 事件处理函数 3, ... ]
当行为触发的时候, 找到对应的这个数组, 循环遍历, 依次执行
当你解绑的时候, 就会循环遍历, 依次去比较, 找到一个一样的, splice()
封装事件绑定和解绑
1. 为什么要封装 ?
一是考虑到兼容问题, 还有使用起来更方便
2. 封装需要几个参数 ?
事件源, 事件类型, 事件处理函数
手动抛出异常
使用方法: throw new Error('错误信息')
用代码的方式在控制台报错
一旦代码执行, 会直接中断程序
事件对象
当一个事件触发的时候, 对本次事件的描述
例子: 键盘事件
当你在按下键盘的时候触发
需要记录一些信息
按下的是哪一个按键
你按下的是不是组合按键
如何获取事件对象
标准浏览器
在事件处理函数上接收一个形参
事件触发时, 浏览器自动传递实参
IE 低版本浏览器
不需要接收形参
直接使用 window.event
标准浏览器下也可以使用
书写一个兼容方式
=> e = e || window.event
事件是 JavaScript 与网页结合的主要方式。虽然基本的事件都有规范定义,但很多浏览器在规范之外实现了自己专有的事件,大家要自己慢慢理解。好了今天就到这里吧 这也是记录我写作的第二十天,慢慢坚持整理自己的思路一边后面更好的帮助大家理解 js。
版权声明: 本文为 InfoQ 作者【Jason199】的原创文章。
原文链接:【http://xie.infoq.cn/article/d5e0c27b107e25a4eb1a6fad0】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论