[js笔记整理]事件篇
一、事件流
1.冒泡事件:从特定的事件到不特定事件依次触发;(由DOM层次的底层依次向上冒泡)
(1)示例:
<html onclick="add('html<br>')">
<body onclick="add('body<br>');">
<div onclick="add('div<br>');">
<p onclick="add('p<br>');">Click Me</p>
</div>
<div id="display"></div>
</body>
</html>
function add(sText){
var oDiv = document.getElementById("display");
oDiv.innerHTML += sText; //输出点击标签名
}
结果如下:

(2)取消冒泡:冒泡事件有时会带来不必要是的事件发生,可通过以下方式取消冒泡
oEvent.cancelBubble=ture; //取消冒泡事件
2、捕获事件:
(1)从最不精确到最精确(ie不支持)
(2)ie中捕获事件:所有事件集中到该对象
obj.setCapture(); //捕获事件
obj.relaseCapture(); //释放捕获事件
二、事件监听方法
从事件角度看,函数响应事件发生--处理函数;从函数角度看,函数监听事件是否发生--监听函数;
1、通用监听方法
(1)在html标签中添加处理函数 例如<p onclick="function(){}"></p>
(2)通过DOM加载对象,直接设置监听函数
2、ie监听方法
obj.attachEvent(event_handle,fnHandler); //添加监听函数
obj.detachEvent(event_handle,fnHandler); //释放监听函数
3.标准DOM监听方法
obj.addEventListener(event_name,fnHandler,bCapture); //添加监听函数
obj.removeEventListener(event_name,fnHandler,bCapture); //释放监听函数
bCapture表示事件类型(ture:捕获/false:冒泡)
4.ie和标准DOM兼容处理方法
function addEvent(obj,event,fun)
{
if(obj.attachEvent)
{
obj.attachEvent('on'+event,fun);
}
else
{
obj.addEventListener(event,fun,false);
}
}
三、事件对象
(1)IE中的事件对象对以window的属性存在:window.event;
标准DOM中事件对象作为唯一参数传递给事件监听函数;
(2)两种兼容处理方法:
function(ev)
{
var oEvent=ev||window.event;
}
function(oEvent)
{
if(window.event) oEvent=window.event;
}
1、事件对象类型及其常用属性方法
(1)鼠标位置
clienX/clientY:相对可视区域坐标(不包括滚动的距离)
screenX/screenY:相对屏幕坐标
获取包括滚动位置坐标
function getPosition(ev)
{
oEvent=ev||event;
var ollTop=document.documentElement.scrollTop||document.body.scrollTop;
var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;
return{x:oEvent.clientX+scrollLeft,y:ev.clientY+scrollTop}
}
(2)鼠标事件
click:单击 dbclick:双击
mousedown:按下任意键触发 mouseup:松开任意键触发
mouseover:在某个元素上时候触发 mouseout:移出某一元素
mousemove:在某个元素上移动时候触发
button属性:按键键值:【标准dom:0左键、1中键(滑轮)、2右键、不支持组合键】
(3)键盘事件:
事件:
keydown:按下某个键触发
keypress:按下某个按键产生字符时触发
keyup:释放摸个按键时触发
属性:
event.keycode属性:按键值
event.crtlkey crtl键是否按下
event.shiftkey shift键是否按下
event.alt alt键是否按下
四、默认事件
1、非用户设置,浏览器自身所带的行为;
2、右键菜单事件:
(1)document.oncontxetmenu=function(){};
(2)
document.onmousedown=function(ev)
{
var oEvent=ev||window.event;
if(oEvent==2){};
}
3、取消默认事件: return false
4、只能输入数字
obj.onkeydown=function(ev)
{
var oEvent=ev||window.event;
if(oEvent.Code==8 &&(oEvent.CodekeyCode<48 || oEvent.keyCode>57) ) return false;
}
五、html事件
事件名称 触发条件
load 加载完成
unload 卸载完成
error 脚本错误
select 选择文本框多个字
change 文本框失去焦点并且有内容变换
submit 提交
focus 获取焦点
blur 失去焦点
六、自定义事件
// 创建事件
var event = document.createEvent('Event'); // 定义事件名为'build'.
event.initEvent('build', true, true); // 监听事件
elem.addEventListener('build', function (e) {
// e.target matches elem
}, false); // 触发对象可以是任何元素或其他事件目标
elem.dispatchEvent(event);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
七、事件模型
1、EventTarget 接口
addEventListener:绑定事件的监听函数removeEventListener:移除事件的监听函数dispatchEvent:触发事件
(1)target.addEventListener(type, listener[, useCapture]);
type:事件名称,大小写敏感。listener:监听函数。事件发生时,会调用该监听函数。useCapture:布尔值,表示监听函数是否在捕获阶段(capture)触发,该参数可选。
[js笔记整理]事件篇的更多相关文章
- [js笔记整理]面向对象篇
一.js面向对象基本概念 对象:内部封装.对外预留接口,一种通用的思想,面向对象分析: 1.特点 (1)抽象 (2)封装 (3)继承:多态继承.多重继承 2.对象组成 (1)属性: 任何对象都可以添加 ...
- [js笔记整理]正则篇
一.正则基本概念 1.一种规则.模式 2.强大的字符串匹配工具 3.在js中常与字符串函数配合使用 二.js正则写法 正则在js中以正则对象存在: (1)var re=new RegExp(正则表达式 ...
- [js笔记整理]DOM 篇
一.节点类型 1.元素节点:HTML元素 2.文本节点:元素标签中的内容 3.属性节点:元素的属性 (检测节点类型:node.nodeType //元素=1,属性=2,文本=3) 二.使用DOM获取元 ...
- JS笔记 - JQ事件委托( 适用于给动态生成的脚本元素添加事件)
最近一段时间打了一个大仗,现在总算消停点,才有时间来做个总结吧算是: 移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件.自测各方面都挺好的,美滋滋的给了研发.研发也美滋滋的开始开发. ...
- 微信小程序笔记整理--入门篇。
7-2 微信小程序入门篇 准备篇 1.登录网址,https://mp.weixin.qq.com 注册一个微信小程序. 2.获取微信小程序appid,登录自己的小程序后台,在开发者设置中获得appid ...
- js笔记19 事件对象
1.常用的事件 onmouseover onmouseout onmousedown onmousemove onmouseup onclick onchange onfocus o ...
- js 笔记整理
Js中for.for-in.forEach以及for-of的用法及特性对比 for-in for...in以任意顺序遍历一个对象的可枚举属性.所以for-in不适合用来迭代一个Array.同时,for ...
- JS第一周学习笔记整理
目录 JS正式课第一周笔记整理 JS正式课第一周笔记整理 webstorm : 代码编辑器 浏览器: 代码解析器: Git : 是一个工具;用于团队协作开发项目管理代码的工具:在工作中用git.svn ...
- js事件篇
javascript和html之间的交互式通过事件来实现的,事件就是文档或浏览器窗口中发生的一些特定的交互. 事件流:描述的是从页面中接收事件的顺序. 不同的是,IE和Netscape开发团队竟然提出 ...
随机推荐
- elasticsearch 索引 red 状态恢复 green
方案一 找到状态为 red 的索引 curl -X GET "http://172.xxx.xxx.174:9288/_cat/indices?v=" red open index ...
- Sublime Text3 编辑器我的最爱
简介 Sublime Text 3是一个神奇的文本编辑器,适合程序员.作家.它有很多亮点功能,比如多选择.Go Anything.命令面板.多选择可以让你同时编辑多出代码,Got Anything 像 ...
- CoreCLR源码探索(五) GC内存收集器的内部实现 调试篇
在上一篇中我分析了CoreCLR中GC的内部处理, 在这一篇我将使用LLDB实际跟踪CoreCLR中GC,关于如何使用LLDB调试CoreCLR的介绍可以看: 微软官方的文档,地址 我在第3篇中的介绍 ...
- JDBC与ArrayList和hashmao
JDBC帮助类 package work; import java.beans.Statement;import java.sql.Connection;import java.sql.DriverM ...
- javascript的闭包与一次重构的感受
有没有这么一个场景,你的一个动作需要在所有异步方法执行完毕后,再进行操作?然而你对异步方法何时执行完毕感到困扰,只能在每个方法中写回调,在回调中重复劳动? 偶然的,想起了之前经理讲过的闭包的概念,偶然 ...
- servlet与jsp的区别(转)
一.基本概念 1.1 Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器 ...
- Cobbler自动化部署最佳实践
第1章 Cobbler自动化部署最佳实践 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的. 面对 ...
- redis实现队列消息的ack
由于公司提供的队列实在太过于蛋疼而且还限制不能使用其他队列,但为了保证数据安全性需要一个可以有ack功能的队列. 原生的redis中通过L/R PUSH/POP方式来实现队列的功能,这个当然是没办法满 ...
- XAF-通知模块概述 web+win
通知模块概述 1.支持 WinForms和ASP.NET程序. 2.支持调度模块或自定义业务对象. 3.功能:在指定的时间,弹出一个窗口,用户可以查看提醒.也可以取消或推迟. 如需演示项目的源码,可以 ...
- 老李推荐:第4章3节《MonkeyRunner源码剖析》ADB协议及服务: ADB协议概览
老李推荐:第4章3节<MonkeyRunner源码剖析>ADB协议及服务: ADB协议概览 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试, ...