一、事件流

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笔记整理]事件篇的更多相关文章

  1. [js笔记整理]面向对象篇

    一.js面向对象基本概念 对象:内部封装.对外预留接口,一种通用的思想,面向对象分析: 1.特点 (1)抽象 (2)封装 (3)继承:多态继承.多重继承 2.对象组成 (1)属性: 任何对象都可以添加 ...

  2. [js笔记整理]正则篇

    一.正则基本概念 1.一种规则.模式 2.强大的字符串匹配工具 3.在js中常与字符串函数配合使用 二.js正则写法 正则在js中以正则对象存在: (1)var re=new RegExp(正则表达式 ...

  3. [js笔记整理]DOM 篇

    一.节点类型 1.元素节点:HTML元素 2.文本节点:元素标签中的内容 3.属性节点:元素的属性 (检测节点类型:node.nodeType //元素=1,属性=2,文本=3) 二.使用DOM获取元 ...

  4. JS笔记 - JQ事件委托( 适用于给动态生成的脚本元素添加事件)

    最近一段时间打了一个大仗,现在总算消停点,才有时间来做个总结吧算是: 移动端遇到一个项目,是一个列表的侧滑栏,在我这里用jq写的交互事件.自测各方面都挺好的,美滋滋的给了研发.研发也美滋滋的开始开发. ...

  5. 微信小程序笔记整理--入门篇。

    7-2 微信小程序入门篇 准备篇 1.登录网址,https://mp.weixin.qq.com 注册一个微信小程序. 2.获取微信小程序appid,登录自己的小程序后台,在开发者设置中获得appid ...

  6. js笔记19 事件对象

    1.常用的事件 onmouseover  onmouseout  onmousedown  onmousemove  onmouseup   onclick  onchange  onfocus  o ...

  7. js 笔记整理

    Js中for.for-in.forEach以及for-of的用法及特性对比 for-in for...in以任意顺序遍历一个对象的可枚举属性.所以for-in不适合用来迭代一个Array.同时,for ...

  8. JS第一周学习笔记整理

    目录 JS正式课第一周笔记整理 JS正式课第一周笔记整理 webstorm : 代码编辑器 浏览器: 代码解析器: Git : 是一个工具;用于团队协作开发项目管理代码的工具:在工作中用git.svn ...

  9. js事件篇

    javascript和html之间的交互式通过事件来实现的,事件就是文档或浏览器窗口中发生的一些特定的交互. 事件流:描述的是从页面中接收事件的顺序. 不同的是,IE和Netscape开发团队竟然提出 ...

随机推荐

  1. canvas 3D雪花效果

    <!DOCTYPE html> <html style="height: 100%;"> <head> <meta charset=&qu ...

  2. 开源 & 免费使用 & 打包下载自行部署 :升讯威 周报系统

    这个周报系统大约写于2015年,缘起当时所带的开发团队需要逐步建立或完善一些项目管理方法. 在调研了网上的诸多项目管理或周报/日报管理系统之后,并没有找到符合当时情况的系统,这里最大的问题不是网上既有 ...

  3. RunTime 给类添加属性

    RunTime网上有很多人都不知道Runtime到底是干嘛的?有很多博主都是长篇大论给他们讲这个讲那个,我感觉还不如实例来的实在.很简单的一个例子:我们都知道会有这样的需求,未读消息列表的图片上要有一 ...

  4. Spark技术在京东智能供应链预测的应用

    1 背景 前段时间京东公开了面向第二个十二年的战略规划,表示京东将全面走向技术化,大力发展人工智能和机器人自动化技术,将过去传统方式构筑的优势全面升级.京东Y事业部顺势成立,该事业部将以服务泛零售为核 ...

  5. express创建网站

    Express 在初始化一个项目的时候需要指定模板引擎,默认支持Jade和ejs. 这里我们使用ejs模板引擎:(关于ejs的介绍可以先从百科里面了解一个大概)EJS是一个JavaScript模板库, ...

  6. vuejs子组件向父组件传递数据

    子组件通过$emit方法向父组件发送数据,子组件在父组件的模板中,通过自定义事件接收到数据,并通过自定义函数操作数据 <!DOCTYPE html> <html lang=" ...

  7. 【C++】指针与引用的区别

    本文主要总结在C++中指针与引用的区别. 从定义与性质来看指针与引用有如下区别: 指针表示的是一块变量的地址 引用表示一个变量的别名. 因此指针变量需要占用空间(一个指针变量在32位系统下占用4字节, ...

  8. Yii2高级模板vendor和application非同级目录部署

    上面是Yii2的高级模板,当我们有多个application的时候,这种高级模板可以可以提供很好的扩展性,多个application共用一份YII2框架,默认情况下,框架和application是在同 ...

  9. Solr6.5在Centos6上的安装与配置 (一)

    这篇文章主要是介绍在Centos6上Solr6.5的安装与配置. 一.安装准备及各软件使用版本说明: 1.JDK8,版本jdk1.8.0_121下载地址:jdk-8u121-linux-x64.tar ...

  10. 老李推荐:第14章7节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-获取版本号 2

    代码先是发送”LIST”命令到ViewServer列出所有的打开的窗口,然后把每个窗口都保存起来.342行起按照源码的注释解析就是说:从协议版本3以后开始加入了窗口自动更新的功能,但是在此之前,如果用 ...