| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> JavaScript事件 -> 正文阅读 |
|
[JavaScript知识库]JavaScript事件 |
JavaScript事件搬运自个人博客:JavaScript事件 注册事件(绑定事件)给元素添加事件,称为注册事件或者绑定事件。 有传统方式和方法监听方式 传统方式利用on开头的事件,如onclick, 同一个元素同一个事件只能设置一个处理函数,出现多个处理函数的话,后面的会覆盖前面的。 例子:
方法监听注册方式addEventListener():
type: 事件类型字符串,如click、mouseover等,不带on listener: 事件处理函数,事件发生会调用该监听函数 useCapture: 可选参数,是一个布尔值,默认是false。决定监听器的触发阶段是捕获阶段还是冒泡阶段详见。 addEventListener() 是 W3C DOM 规范中提供的注册事件监听器的方法。 优点:
例子: addEventListener:
此处是个人见解: 当两个监听函数一样时,由上可发现会输出两次1,这个其实是因为上面两个匿名函数看似一样,实际它们所开辟的内存空间不一样。 把相同的方法抽出来后会发现,无法实现多个监听,就是因为两个方法变成完全一样了。
参数是匿名函数和是箭头函数区别: 它们绑定不同的this对象。匿名函数和传统方式一样会创建独有的this对象(即触发事件的元素),而箭头函数是继承绑定它所在函数的this对象。 例子: 匿名函数:
结果: 箭头函数:
结果: attachEvent():
eventNameWithOn: 事件类型字符串。如onclick、onmouseover,要带on callback: 事件处理函数,事件发生会调用该回调函数 IE9之前的IE不支持,对应有attachEvent(),用法和addEventListener 近似,不过事件需要变回传统方式的on系列。 attachEvent缺点:this的值会变成window对象的引用而不是触发事件的元素。 删除事件(解绑事件)传统方式eventTarget.onclick = null; 例子:
方法监听注册方式对应addEventListener
移除完全匹配的监听,只有事件处理函数完全一样,包括开辟的内存空间。 完全匹配例子:
不完全匹配例子(开辟的内存空间不一样):
DOM事件流事件流描述的是从页面中接收事件的顺序。 事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程就是DOM事件流。 例如给一个div注册了事件: DOM事件流分为3个阶段:
事件捕获:网景最早提出,由DOM最顶层节点开始,然后逐级向下传播到绑定事件的元素接受的过程。 事件冒泡:IE最早提出,事件逐级向上传播到DOM最顶层节点的过程。 事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流。 注意:
为false:
为true:
例如:
事件对象事件处理函数可以带参数,带的参数就是事件对象。
如上式所示,event就是事件对象,,它代表事件的状态,如键盘按键的状态、鼠标的位置、鼠标按钮的状态等。事件发生后,跟事件相关的一系列信息的集合都在这个对象里面。 不需要传递实参 注册事件时,event对象会被系统自动创建,并依次传递给事件监听器(事件处理函数)。 在IE6~8中,浏览器不会给方法传递参数,需要的话,要到window.event中获取。 e = e || window.event; 事件对象的常见属性和方法e.target和this的区别: this是事件绑定的元素(匿名函数形式),函数的调用者。 e.target是事件触发的元素。 例子:
阻止默认行为
例子:
阻止事件冒泡
例子:
没加e.stopPropagation()之前会依次弹出1、2、3、4,在按钮绑定的事件中,加上之后只会弹出1 事件委托事件委托也被称为事件代理,在jQuery里面称为事件委派。 事件委托原理不需要给每个子结点单独设置事件监听器,而是把事件监听器设置在其父节点上,然后利用冒泡原理去影响子节点。 例子:
上面例子:直接给li的父节点绑定监听器,然后利用e.target找到当前点击的li,点击li,事件会冒泡到ul上,而ul上有注册事件,就会触发事件监听器。 作用只需要操作一次DOM,提高了程序性能。 常用的鼠标事件ontextmenu:鼠标右键菜单,可用于取消默认的菜单 selectstart:开始选中,可用于禁止选中文字 常用鼠标事件对象属性案例跟随鼠标的天使 常用的键盘事件onkeypress不识别功能键,如ctrl、shift等 首先,keyup是弹起时才会触发的,所以顺序是最后的,所以只需要记得keydown优先级更高就行
常用键盘事件对象属性keyCode:返回该键的ASCII值(数字) onkeydown和onkeyup不区分字母大小写,onkeypress区分字母大小写 案例模拟京东快递单号查询案例 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:28:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |