Dom事件

1.DOM0级事件

  on事件 只能 监听冒泡阶段 切只能绑定一个事件

dom.onclick = function(){};

2.Dom2级事件

  可以绑定多次事件    可以通过设置flag来监听冒泡和捕获阶段  先捕获再冒泡 捕获自上至下 冒泡从下向上

dom.addEventListener('click',function(){},flag)    //flag true为捕获 false 为默认冒泡

3.常见的事件

DOMContentLoaded  DOM加载完成
onblur 元素失去焦点
onclick 鼠标点击某个对象
ondbclick 鼠标双击某个对象
onfocus 元素得到焦点
onkeydown 键盘某个按键按下(event.key/event.keycode)
onkeypress 某个按键被按下或按住
onkeyup  某个按键被松开
onload 某个页面火元素被加载完成
onmousedown 当鼠标按键被按下
onmousemove 当鼠标移动
onmouseout 当鼠标移出某个元素
onmouseup 当鼠标按键松开
onmouseover 当鼠标位于某元素上
onselect 文本被选定
onresize 当窗口大被调整
onsubmit 提交按钮被惦记
onunload 用户退出页面

4.事件的冒泡捕获(低版本的IE没有事件捕获)

<div class="box">
<button>按钮</button>
</div>
<script>
var btn = document.getElementsByTagName('button')[0];
var box = document.getElementsByClassName('box')[0];
box.addEventListener('click',function(){
console.log('box true')
},true)
box.addEventListener('click',function(){
console.log('box false');
},false)
btn.addEventListener('click',function(){
console.log('btn true');
},true);
</script>

结果是 

 4.取消事件绑定

  取消on事件    

btn.onclick=null;

  取消二级事件(removeEventListener(type,function-name))

btn.removeEventListener('click',move);//只有有名的函数 事件才能取消

  阻止默认事件

event.preventDefault()

  或者

return false;  //这即停止了 默认事件 也 阻止了冒泡

5.event 对象  ele.onclick = function(event){} (event是一个json 对象 )

  currentTarget  目标事件,在冒泡中依然是 触发事件的那个元素

  target     时间不妙

  bubbles    等属性

  offsetX/Y    鼠标距离元素边框的 x/y

  screenX/Y    鼠标距离显示器边界的X/Y

  clientX/Y    鼠标距离body的X/Y

6.阻止冒泡

  cancleBubble 或者 stopPropagation

btn.onclick = function(){
event.cancelBubble=true;
event.stopPropagation();
console.log(event)
}

7.需要的兼容

  event = event || window.event;

  target = event.target || event.srcElement

8.事件委托

  

 <ul>
<li id="1">1</li>
<li id="2">2</li>
<li id="3">3</li>
<li id="4">4</li>
<li id="5">5</li>
<li id="6">6</li>
<li id="7">7</li>
<li id="8">8</li>
<li id="9">9</li>
<li id="10">10</li>
</ul>
<script>
var oUl = document.getElementsByTagName('ul')[0];
oUl.addEventListener('click',function(event){
var event = event || window.event;
var target = event.target || event.srcEelement; console.log(target.id)
})
</script>

 9.获取滚动条距离顶端的距离

  

document.documentElement.scrollTop;

 10.阻止A标签的默认跳转事件

  <a href="#"></a>
<a href="" onclick="return false"></a>
<a href="javascript:void(0);"></a>

  

  

JavaScript(十二)事件的更多相关文章

  1. 从头开始学JavaScript (十二)——Array类型

    原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...

  2. 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(一)

    这一次我们深入的学习一下JavaScript面向对象技术,在学习之前,必要的说明一下一些面向对象的一些术语. 这也是全部面对对象语言所拥有的共同点.有这样几个面向对象术语: 对象 ECMA-262把对 ...

  3. 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(二)

    四原型方式 我们创建的每一个函数都有一个通过prototype(原型)属性.这个属性是一个对象,它的用途是包括能够由特定类型 的全部实例共享的属性和方法. 逻辑上能够这么理解:prototypt通过条 ...

  4. JavaScript -- 时光流逝(十二):DOM -- Element 对象

    JavaScript -- 知识点回顾篇(十二):DOM -- Element 对象 (1) element.accessKey: 设置或返回accesskey一个元素,使用 Alt + 指定快捷键 ...

  5. How Javascript works (Javascript工作原理) (十二) 网络层探秘及如何提高其性能和安全性

    个人总结:阅读完这篇文章需要20分钟,这篇文章主要讲解了现代浏览器在网络层传输所用到的一些技术, 应当对 window.performance.timing 这个API所有了解. 这是 JavaScr ...

  6. 了解javascript中的事件(二)

    本文目录如下: 零.寒暄 一.事件的分类 二.事件代理 2.1 问题引出 2.2 什么是事件代理 2.3 完整示例 二.事件代理 三.事件代理思想的用处 四.总结 零.寒暄 这篇博客本该出现在两个月以 ...

  7. webpack4 系列教程(十二):处理第三方JavaScript库

    教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十二):处理第三方 JavaScript 库>原文地址.或者来我的小站看更多内容:godbm ...

  8. {Python之线程} 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Threading模块 九 锁 十 信号量 十一 事件Event 十二 条件Condition(了解) 十三 定时器

    Python之线程 线程 本节目录 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Thr ...

  9. JavaScript DOM编程艺术-学习笔记(第十二章)

    第十二章 1.本章是综合前面章节的所有东西的,一个综合实例 2.流程:①项目简介:a.获取原始资料(包括文本.图片.音视频等) b.站点结构(文件目录结构) c.页面(文件)结构 ②设计(切图) ③c ...

  10. JavaScript(二):对象、注释、事件!

    对象 JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观.模块化和可重复使用的方式进行程序开发. 一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象. ...

随机推荐

  1. hadoop2.2集群搭建问题只能启动一个datanode问题

    按照教程http://cn.soulmachine.me/blog/20140205/搭建总是出现如下问题: 2014-04-13 23:53:45,450 INFO org.apache.hadoo ...

  2. Centos 备份 还原

    備份: tar cvpzf backup.tgz / --exclude=/backup.tgz --exclude=/mnt 記得一定要排除備份文件本身哦! 還原: tar xvpfz backup ...

  3. LinQ开篇介绍

    语言集成查询(LINQ)是 Visual Studio2008中引入的一组功能. 可为 C# 和 Visual Basic 语言语法提供强大的查询功能. LINQ引入了标准易学的数据查询和更新模式,能 ...

  4. mysql连接字符串,连接字段结果集

    archie2010 ${原来姹紫嫣红开遍,似这般都付与扣钉八哥} mysql连接字符串,连接字段结果集 select CONCAT('My', 'S', 'QL连接字符串') as MySql; 连 ...

  5. 用C# (.NET Core) 实现抽象工厂设计模式

    用C# (.NET Core) 实现抽象工厂设计模式   本文的概念性内容来自深入浅出设计模式一书. 上一篇文章讲了简单工厂和工厂方法设计模式 http://www.cnblogs.com/cgzl/ ...

  6. C++入门学习——模板

    为什么须要模板? 我们已经学过重载(Overloading),对重载函数而言,C++ 通过函数參数(參数个数.參数类型)的正确匹配来调用重载函数.比如.为求两个数的最大值,我们定义 max () 函数 ...

  7. 三分钟迁移Spring boot工程到Serverless

    前言 Spring Boot已成为当今最流行的Java后端开发框架,典型的应用方式是在云上购买一台虚拟机,每天24小时在上面运行Java程序,在这种情况下,用户必须维护自己的虚拟机环境,而且按照包月包 ...

  8. Python爬虫开发【第1篇】【HTTP与HTTPS请求与响应】

    一.HTTP.HTTPS介绍 HTTP协议(超文本传输协议):一种发布.接收HTML页面的方法 HTTPS协议:简单讲是HTTP安全版,在HTTP下加入SSL层 SSL(安全套接层),用于WEB的安全 ...

  9. 【Poj1090】Chain

    Chain Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3414   Accepted: 1126 Description ...

  10. npm 是干什么的?

    网上的 npm 教程主要都在讲怎么安装.配置和使用 npm,却不告诉新人「为什么要使用 npm」.今天我就来讲讲这个话题. 本文目标读者是「不太了解 npm 的新人」,大神您别看了,不然又说我啰嗦了 ...