一、什么是事件对象?
当绑定事件的对象在触发事件时,发生的详细信息会记录在一个地方,这个地方就叫做事件对象;
二、如何获取事件对象?
标准浏览器获取事件对象,触发事件后,给事件处理程序传递的第一个参数,这个参数就是事件对象;
IE: window.event;
兼容: event=event|| window.event;
三、事件对象的应用
- 获取鼠标的编码值
event button:获取鼠标的编码值;
标准:鼠标左键0 鼠标滚轮(中键)1 鼠标右键2;
IE: 左1 中:4 右:2;
onmousedown 鼠标按下 输出 bymousecode
event.which:获取鼠标编码值 左(1) 中(2) 右(3)
2.获取鼠标的坐标值
- 相对坐标值 鼠标相对当前所在对象上的坐标值(位置);
event.offsetx event.offsety
- 绝对坐标值
event.pagex event.pagey
- 可视区域值
event.clientx event.clienty
- 屏幕坐标值
event.screenx event.screeny
- 获取键盘的编码值
onkeydown/onkeyup :监听整个键盘按键的编码某个字母,只返回大写的编码值;
输出(event.keycode)
onkeypress 监听编码区(字母,数字,空格,回车);
event.keycode event.charcode event.which;
兼容: event keycode|| event.charcode|| event.which;
- 组合键
事件 event.ctrlkey event.shiftkey event.altkey;
5.事件流
事件捕获:事件从祖先元素依次向子孙元素传递事件的过程
事件目标
事件冒泡:从子孙元素依次向祖先传递事件的过程;
浏览器默认启动的是:事件冒泡;
注:IE浏览器的欧朋浏览器不支持事件捕获;
阻止停止冒泡:
标准浏览器:evnet.stoppropagation();
IE : event.cancelBubble=true;
兼容: event.stoppropa;
浏览器的默认行为及阻止默认行为
- 右键菜单 - 阻止 - oncontextmenu(右键菜单)
- 超链接 -阻止
- 拖拽 - 阻止;
阻止默认行为
标准:event.preventDefault() IE: event.returnValue=false; 兼容: event.preventDefault? event.preventDefault(): event.returnValue = false;
即阻止默认行为,也阻止事件冒泡:return false;
事件监听器
作用: 触发一次按钮的事件,发生三件不同的事;
- 事件监听器(添加事件)
- 添加对象 addEventListener(click,fn,fasle);
第一个参数click :事件;
第二个参数fn:事件处理程序;
第三个参数fasle:是否进行事件捕获(true捕获)(false冒泡,默认);
IE浏览器(添加事件);
o_btn.attachEvent("onclick",fn)
- 兼容 function addEventListener(obj,event,fn,bool){
}
3.删除事件监听
标准: 对象.removeEventListener("click",fn,fasle);
IE: 对象.detachEvent("onclick",fn);
事件委托(事件代理)
将添加到子节点上的事件,给它添加到父节点上,可以提高性能,还可以为动态添加的元素添加事件。原理是利用了事件冒泡
标准浏览器获取事件源: event.target;
IE浏览器: evnet.srcElement;
- 获取要添加标签的父元素;
- 创建标签到document中;
- 在创建的标签中添加内容;
- 追加到父元素的末尾;
- 找到事件源(兼容) var target=e.target||e.srcElement(IE);
注意:
- 给父节点添加事件;
- 获取事件源;
- 过滤;
拖拽思想
将数据在拖拽的对象上面按下时,先求出鼠标的相对坐标值,然后在按下的时候移动鼠标,拖拽的对象的坐标值 = 鼠标的绝对坐标值-鼠标的相对坐标。最后当鼠标弹起时,取消移动;
取消默认禁止拖拽 document.ondragstart = function(){return false};
鼠标滚动事件
火狐 非火狐 Dommousesrcoll onmousewheel
返回值:event.detail 返回值: event.wheelDelta
滚动方向: 正:向下,负:向下 滚动方向:正:向上, 负:向下;
返回倍数 3 返回值 倍数:120;
滚动幅度=event.detail1/3 滚动幅度 = event.wheelDelta /120;
什么是正则表则式
检测字符串的一组规则
作用: 1. 表单验证 2. 处理复杂字符串问题;
如何声明正则表达式
字面量声明: / 正则表达式/标志位;
构造函数: new regExg("正则表达式","标志位")
正则表达式的方式
正则表达式对象, test(字符串):检测字符串中是否包含正则,表达式的内容,返回布尔值;
正则表达式exec(字符串):返回正则表达式匹配到字符串中的内容数组;
正则表达式的元字符
三:{} [] ()
- {}:限制{}前的一个或一组字符串连续出现的次数;
- {m}:限制{}前的一个或一组字符串连续出现m次;
- {m,}:限制{}前的一个或一组字符串连续出现m至无限次;
- {m,n}:限制{}前的一个或一组字符串连续出现m至n次;
-
[]:表示范围内的字符串可以随机出现
-
():表达组 括号内的不能拆开表示一个整体
-
三 * + ?
"*":标准*前面的一个或一组字符串连续出现0到无限次;相当于{0,};- +: 表示+前面的一个或一组字符串出现1到无限次相当于{1,};
- ?:前面的一个或一组字符串出现0~1次最多可出现一次可以不出现相当于{0,1}; 5.二 ^ $
- ^:定(断)头:表示必须以^后面的一个字符开头取反,写在[]里的开头部分除[]的元素开头;
- 前字符结尾;
- 三个一 . | \
- . 模糊匹配任意一个字符;
- | 或者
- \转义字符;
特殊转义字符 \d数字 \D非数字 \W非(字母,数字,下划线) \w字母 \s空白 \S非空白; \b边界 \B非边界;
正则表达式的标志位(修饰符);
g:全局匹配; i:不区分大小写;
正则表达式的方法:
exec和match
正则表达式对象exec(字符串):返回正则表达式匹配到字符串中的内容数组;
字符串对象.match(正则):返回正则表达式匹配到字符串中的内容数组;
- 无组无g:都是只获取第一次匹配到的内容;
- 无组有g:exec不受g的影响,match,获取所有匹配到的内容;
- 有组无g:在有组的情况,都是获取一个父级,都是获取一个父级(整个正则匹配的内容)和多个子级(一个组返回一个子级);
- 有组有g:exec不受g的影响,match会返回所有父级元素且只有父级元素(整个正则匹配的内容)exec只会返回第一个父级和父级下的子级元素;
字符串对象,search(正则):和indexof一样,查找字符串中第一次正则匹配到内容所在的下标。查找不到返回-1;
接下来进入 ES6 =>