JavaScript(十二)事件
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(十二)事件的更多相关文章
- 从头开始学JavaScript (十二)——Array类型
原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...
- 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(一)
这一次我们深入的学习一下JavaScript面向对象技术,在学习之前,必要的说明一下一些面向对象的一些术语. 这也是全部面对对象语言所拥有的共同点.有这样几个面向对象术语: 对象 ECMA-262把对 ...
- 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(二)
四原型方式 我们创建的每一个函数都有一个通过prototype(原型)属性.这个属性是一个对象,它的用途是包括能够由特定类型 的全部实例共享的属性和方法. 逻辑上能够这么理解:prototypt通过条 ...
- JavaScript -- 时光流逝(十二):DOM -- Element 对象
JavaScript -- 知识点回顾篇(十二):DOM -- Element 对象 (1) element.accessKey: 设置或返回accesskey一个元素,使用 Alt + 指定快捷键 ...
- How Javascript works (Javascript工作原理) (十二) 网络层探秘及如何提高其性能和安全性
个人总结:阅读完这篇文章需要20分钟,这篇文章主要讲解了现代浏览器在网络层传输所用到的一些技术, 应当对 window.performance.timing 这个API所有了解. 这是 JavaScr ...
- 了解javascript中的事件(二)
本文目录如下: 零.寒暄 一.事件的分类 二.事件代理 2.1 问题引出 2.2 什么是事件代理 2.3 完整示例 二.事件代理 三.事件代理思想的用处 四.总结 零.寒暄 这篇博客本该出现在两个月以 ...
- webpack4 系列教程(十二):处理第三方JavaScript库
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十二):处理第三方 JavaScript 库>原文地址.或者来我的小站看更多内容:godbm ...
- {Python之线程} 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Threading模块 九 锁 十 信号量 十一 事件Event 十二 条件Condition(了解) 十三 定时器
Python之线程 线程 本节目录 一 背景知识 二 线程与进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 七 python与线程 八 Thr ...
- JavaScript DOM编程艺术-学习笔记(第十二章)
第十二章 1.本章是综合前面章节的所有东西的,一个综合实例 2.流程:①项目简介:a.获取原始资料(包括文本.图片.音视频等) b.站点结构(文件目录结构) c.页面(文件)结构 ②设计(切图) ③c ...
- JavaScript(二):对象、注释、事件!
对象 JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观.模块化和可重复使用的方式进行程序开发. 一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象. ...
随机推荐
- 携程Apollo(阿波罗)配置中心的Java样例客户端启动和调试
参考:https://github.com/ctripcorp/apollo/wiki/Apollo%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97#23-java%E6%A0 ...
- CSS聊天气泡
概述 谷歌效果图如下: ie效果图如下: 完整代码 <!DOCTYPE html> <html> <head> <meta charset="gbk ...
- SD卡 驱动层测速
init_timer(&timer1); timer1.function = test_time; timer1.data = ; timer1.expires = jiffies + mse ...
- Samba.conf案例 Ubuntu
# Sample configuration file for the Samba suite for Debian GNU/Linux.## This is the main Samba confi ...
- 【DataStructure】Charming usage of Set in the java
In an attempt to remove duplicate elements from list, I go to the lengths to take advantage of meth ...
- mac 终端经常使用命令(三)
基本命令 1.列出文件 ls 參数 文件夹名 例: 看看驱动文件夹下有什么:ls /System/Library/Extensions 參数 -w 显示中文,-l 具体信息. -a 包含 ...
- web 开发之js---js 中的数组操作
js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^var arr = new Array();arr[0] = "aaa";arr[1] ...
- Codeforces Round #311 (Div. 2) D - Vitaly and Cycle
D. Vitaly and Cycle time limit per test 1 second memory limit per test 256 megabytes input standard ...
- ModuleNotFoundError: No module named 'urlparse'
这是2.x转3.x问题 2.x写法: from urlparse import urlparse 3.x写法: from urllib.parse import urlparse 问题解决.
- Dubbo近况
刚下班看到开发者头条上一篇讲dubbo前世今生的文章,总结的不错,摘录一下. 从2012年10月23日Dubbo 2.5.3发布后,在Dubbo开源将满一周年之际,阿里基本停止了对Dubbo的主要升级 ...