Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >浅谈JavaScript的事件(事件类型)

浅谈JavaScript的事件(事件类型)

作者头像
水击三千
发布于 2018-02-27 09:55:47
发布于 2018-02-27 09:55:47
1.9K00
代码可运行
举报
文章被收录于专栏:水击三千水击三千
运行总次数:0
代码可运行

  Web浏览器能够发生的事件有很多种类型,不同的事件类型有不同的事件信息。DOM3级的事件类型主要包括:UI事件,用户与页面上的元素交互时触发;焦点事件,元素获得或失去焦点触发;鼠标事件,用户通过鼠标在页面上执行操作时触发;滚轮事件,使用鼠标滚轮时触发;文本事件,当在文档中输入文本时触发;键盘事件,用户通过键盘在页面上操作触发;合成事件,当为IME输入字符时触发;变动事件,底层DOM结构发生变化时触发。

  • UI事件

  UI事件的触发并不一定是由用户操作触发的,包括:load,页面完全加载后在window上触发该事件、当所有框架都加载完毕时触发、当图片加载完毕时在img上触发、当嵌入的元素加载完成时在object上面触发;unload事件,当页面完全卸载后在window上面触发、当所有框架都卸载完成时在框架集上触发、当嵌入的内容卸载完毕后在object上触发;abort事件,在用户停止下载过程时,如果嵌入的内容未加载完成,则在object上面触发;error事件,当发生JavaScript脚本错误时触发,当无法加载图像时,在img元素上触发,当无法加载嵌入内容时在object上触发,当框架无法加载时触发;select事件,当用户选择文本框的内容时触发;resize事件,当浏览器窗口大小改变时触发;scroll事件,当用户滚动带滚动条的元素时触发。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 EventUtil.addEvent(window,"load",function(){
2                 console.log(document.getElementById("aa").innerHTML);//2223             });

  上面的代码添加了load事件,当页面加载完成后就会触发该事件。使用load事件能够确保事件是在页面元素加载完成后触发,不活出现错误。如果我们在页面元素位加载完成,就去获取页面上的元素,则会产生错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 var img=document.getElementById("imgtest");
2             EventUtil.addEvent(img,"load",function(event){
3                 event=EventUtil.getEvent(event);4                  console.log(event.currentTarget.src);
5             });

  上面的代码在img的图片加载完成后,会触发load事件,在load事件中,我们获取了event对象,并通过event对象的属性currentTarget取得了事件处理程序操作的元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 var sc = document.createElement("script");
2             sc.src="js/checkboxdemo.js";
3             EventUtil.addEvent(sc,"load",function(event){
4                 console.log("loaded");
5             });
6             document.head.appendChild(sc);

  上面的代码,动态向head添加脚本文件,并且绑定了load事件。

  unload事件是与load事件对立的一个事件,这个事件在完全卸载后触发。当用户从一个页面切换到另一个页面就会触发该事件。需要注意的是,在unload事件中不能dom元素进行操作,因为当unload事件执行的时候,所有的页面元素都已经不存在。

  当浏览器大小发生改变的时候会触发resize事件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 EventUtil.addEvent(window,"resize",function(event){
2                 alert("resize");
3             });

  需要注意的是不要再resize中添加大量的计算代码,因为在浏览器窗口改变的时候,resize事件会被频繁的触发,会影响浏览器的性能。

  • 焦点事件

  焦点事件会在页面获得或失去焦点时触发。利用这些事件,并于document.hasFocus()方法和document.activeElement属性配合,可以知晓用户在页面上的行为。有6个焦点事件:blur事件,元素失去焦点时触发事件,不会冒泡;focus事件,元素获得焦点时触发,不会冒泡;focusin事件,元素获得焦点时触发,会冒泡;focusout事件,元素失去焦点时触发,会冒泡。当用户在页面上由一个元素移动到另一个元素事件触发的顺序为:focusout事件,在失去焦点的元素上触发;focusin事件,在获得焦点的元素上触发;blur事件,在失去焦点的元素上触发;focus事件,在获得焦点的元素上触发。

  • 鼠标与滚轮事件

  鼠标事件是WEB开发中最常用的事件。DOM3级中定义了9个鼠标事件:click事件,用户单击鼠标左键触发的事件或者按下enter键触发;dbclick事件,用户双击鼠标左键的时候触发;mousedown事件,用户按下鼠标按钮时触发;mouseenter事件,用户光标从元素外部首次移动到元素范围之内触发。这个事件不冒泡,而且光标在移动到后代元素上不会触发;mouseleave事件,在位于元素上方的事件移动到元素范围之外时触发;mousemove事件,鼠标在元素内部移动时重复重复;mouseout事件,在鼠标指针位于一个元素上方然后用于将其移入另一个元素时触发;mouseover事件,鼠标位于元素外部,然后用户首次将其移入元素内部触发;mouseup事件,释放鼠标时触发。

  只有在同一个元素上触发mousedown和mouseup事件,才会触发click事件。只有触发两次click事件,才会触发dbclick事件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 var img=document.getElementById("imgtest");
 2             EventUtil.addEvent(img,"mousedown",function(event){
 3                 console.log(event.type);
 4             });
 5             EventUtil.addEvent(img,"mouseup",function(event){
 6                 console.log(event.type);
 7             });
 8             EventUtil.addEvent(img,"click",function(event){
 9                 console.log(event.type);
10             });
11             EventUtil.addEvent(img,"dblclick",function(event){
12                 console.log(event.type);
13             });

  上面的代码在img上注册了mousedown、mouseup、click、dblclick事件。当双击img的时候,依次输出:mousedown、mouseup、click、mousedown、mouseup、click、dblclick。

  鼠标滚轮事件就是mousewheel事件,这个事件跟踪鼠标滚轮。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 EventUtil.addEvent(document.getElementById("imgtest"),"mousemove",function(event){
 2                 event=EventUtil.getEvent();
 3                 var pageX=event.pageX,
 4                 pageY=event.pageY;
 5                 if(!event.pageX){
 6                     pageX=event.clientX+(document.body.scrollLeft||document.documentElement.scrollLeft);
 7                 }
 8                 if(!pageY){
 9                     pageY=event.clientY+(document.body.scrollTop||document.documentElement.scrollTop);
10                 }
11                 console.log(pageX+","+pageY);
12             })

  上面的代码能够实时显示鼠标的页面位置信息。即使有了滚动条,依然能够正确计算。

  • 键盘与文本事件

  用户在使用键盘时会触发键盘事件,有3个事件:keydown事件,当用户按下键盘上任意键时触发,如果按住不放会重复触发此事件;keypress事件,当用户按下键盘上的字符键时触发,如果按住不放会重复触发此事件;keyup事件,当释放键盘上的键时触发。

  用户按下键盘上的字符键时,首先会触发keydown事件,然后是keypress事件,最后触发keyup事件。其中keydown和keypress是在文本框发生变化之前触发,keyup是在文本框变化之后触发。如果按下的是非字符集,则会触发keydown和keyup事件。

  在发生keydown和keyup事件时,event对象的keyCode属性会包含一个代码,与键盘上一个特定的键对应。对数字字母字符集,keyCode的属性值与ASCII码中的小写字母或数字的编码相同。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 EventUtil.addEvent(document.getElementById("inputtext"),"keyup",function(event){
2             event=EventUtil.getEvent(event);
3             console.log(event.keyCode);
4         })
  • 复合事件

  复合事件是DOM3级中新增加的一类事件,用于处理IME的输入序列。IME可以让用户输入在键盘上找不到的字符。IME通常需要同时多个字符来确定一个字符,比如中文的输入。包括3个事件:compositionstart事件,IME打开时触发,表示要输入了;compositionupdate事件,插入新字符时触发;compositionend事件,在IME复合系统关闭时触发,返回正常输入状态。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 var textbox=document.getElementById("inputtext");
 2         EventUtil.addEvent(textbox,"compositionstart",function(event){
 3             event=EventUtil.getEvent(event);
 4             console.log(event.data);
 5         });
 6         EventUtil.addEvent(textbox,"compositionupdate",function(event){
 7             event=EventUtil.getEvent(event);
 8             console.log(event.data);
 9         });
10         EventUtil.addEvent(textbox,"compositionend",function(event){
11             event=EventUtil.getEvent(event);
12             console.log(event.data);
13         });
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-02-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WEB入门之十四 jQuery事件
JavaScript是事件驱动型的编程语言,即JavaScript和HTML之间的交互是通过用户和浏览器操作页面时触发的事件来驱动进行的。使用传统的JavaScript就能处理这些交互,但是jQuery增加并扩展了JavaScript事件处理机制,使其使用起来更加优雅和灵活。本章我们重点讲解jQuery中的各种事件以及事件的绑定。
张哥编程
2024/12/17
2870
WEB入门之十四   jQuery事件
javascript事件详解
事件流 事件流两种顺序:冒泡与捕获。 简单的添加与删除事件 obj.onclick=function(){} obj.onclick=null; 通用事件添加的删除 obj.addEventListener(),obj.attachEvent() obj.removeEventListener(),obj.attachEvent() 三个参数分别表示,(事件,绑定函数,事件流), 注意: 1.如果必须得删除事件,这种写法,不能用匿名函数,否则删除函数的时候,不方便。 2.attachEvent的事件名称是o
前朝楚水
2018/04/02
1.4K0
浅谈JavaScript的事件(事件委托)
  事件处理程序为Web程序提供了系统交互,但是如果页面中的事件处理程序太多,则会影响页面的性能。每个函数都是对象,都会占用内存,内存中对象越多,性能越差。需要事先为DOM对象指定事件处理程序,导致访问DOM的次数增多,会延迟整个页面的交互就绪时间。 事件委托   对事件处理程序过多的解决方案是使用事件委托。事件委托利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。比如click事件会一直冒泡到document,也就是说我们只需为整个页面指定一个onclick事件处理程序,而不必为每个需
水击三千
2018/02/27
1.1K0
JQery事件
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情
默默的成长
2022/11/12
4630
面试官:考你几个简单的事件问题吧
事件处理是JavaScript中非常重要的概念,我们使用的客户端软件往往都是事件驱动的,所以面试官特别喜欢问一些事件相关的知识,这里记录几个常见的问题,供大家学习。
kai666666
2020/10/19
1.2K0
知识点 | JavaScript事件浅析
一个网页由三层组成(html 结构,js 行为,css 表现),一切的东西其实都建立在html上,html里面的dom提供了一些事件,然后通过js封装,我们可以用js去调用dom上的事件。事件有很多,有我用过的有我没用过的,今天我想分析一番。
疯狂的技术宅
2019/03/28
1.3K0
DOM事件基本概念大总结(前端必备)
事件流 这一概念源自于对事件触发对象的思考。例如常见的点击事件,鼠标移动事件。这些事件发生之时,往往不只是点击或者移动到某一特定元素上。 比如点击某一个按钮,而它是由上一层的父标签,或许在上一层还有父标签甚至是整个页面。因此点击一个元素可以看成是同时点击了父标签或者整个页面。那么此时事件应该怎么响应到指定标签呢? 事件冒泡 即事件从指定元素开始传播到最外层的元素,并且该事件不仅会在指定元素上发生,还会在传播过过程中的每一个元素上发生。 <html> <body> <div>
努力的Greatiga
2022/07/25
1.9K0
js编程笔记之事件异常
事件处理程序的运行环境 1.ele.onxxx = function (event) {} 程序this指向是dom元素本身 2.obj.addEventListener(type, fn, false); 程序this指向是dom元素本身 3.obj.attachEvent(‘on’ + type, fn); 程序this指向window 封装兼容性的 addEvent(elem, type, handle);方法 复制代码 解除事件处理程序 ele.onclick = false/‘’/null; e
用户10094878
2022/11/21
6990
Web前端事件
何雪斌
2017/05/17
3.4K0
Web前端事件
事件
JavaScript与HTML之间的交互式通过事件实现的。 事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码。
奋飛
2019/08/15
3.3K0
javascript 事件基础
一:事件流       事件流描述的是从页面中接收事件的顺序。  事件冒泡 <div id="one"> <div id="two"> <div id=
柴小智
2018/04/10
9630
javascript 事件基础
浅谈JavaScript的事件(事件模拟)
  事件经常由操作或者通过浏览器功能触发,通过JavaScript也可以触发元素的事件。通过JavaScript触发事件,也称为事件的模拟。 DOM中事件模拟   可以document的createEvent方法创建event对象。这个方法接收一个参数,即表示要创建的事件类型的字符串。在DOM2级中,所有这些字符串都使用英文复数形式,在DOM3级中都变成了单数。这几个字符串如下:UIEvents,一般化的ui事件,鼠标事件和键盘事件都继承于该事件,在DOM3级中是UIEvent;MouseEvents,一般
水击三千
2018/02/27
2.1K0
02-老马jQuery教程-jQuery事件处理
1. 绑简单事件 在DOM中DOM0级绑定事件的方式是直接给事件属性赋值,但是这样有个缺点就是每次指定的事件处理程序会把之前的覆盖掉。 jQuery简单绑定事件的方式,可以让我绑定多个事件处理程序跟D
老马
2018/01/05
2.8K0
JavaScript 学习-35.jQuery 基础语法与事件
前言 jQuery 是一个轻量级的”写的少,做的多”的 JavaScript 库。极大地简化了 JavaScript 编程 jQuery 库包含以下功能: HTML 元素选取 HTML 元素操作 CSS 操作 HTML 事件函数 JavaScript 特效和动画 HTML DOM 遍历和修改 AJAX Utilities 环境准备 在网页中使用 jQuery 可以使用以下方法: 从 jquery.com 下载 jQuery 库 从 CDN 中载入 jQuery, 如从 Google 中加载 jQuery j
上海-悠悠
2022/05/31
2.1K0
JavaScript 学习-35.jQuery 基础语法与事件
JavaScript的事件
javascript与HTML之间的交互是通过事件实现的。事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。
小小鱼儿小小林
2020/06/24
1.5K0
接上一篇事件详解
事件类型: DOM3级事件规定了以下几类事件;如下: UI事件: 当用户与页面上的元素交互时触发; load事件:当页面加载完后(包括所有图像,所有javascript文件,css文件等外部资源),就会触发window上面的load事件,如下代码是加载图片的: HTML代码:<img src = “event.png” id=”img”/> JS代码如下: var img = document.getElementById("img"); EventUtil.addHandler(img,'load',fu
前朝楚水
2018/04/02
1.9K0
JavaScript 事件基础补充
JavaScript事件是由访问Web页面的用户引起的一系列操作,例如:用户点击。当用户执行某些操作的时候,再去执行一系列代码。 一.事件介绍 JavaScript有三种事件模型:内联模型、脚本模型和DOM2模型。 二.内联模型 这种模型是最传统接单的一种处理事件的方法。在内联模型中,事件处理函数是HTML标签的一个属性,用于处理指定事件。虽然内联在早期使用较多,但它是和HTML混写的,并没有与HTML分离。 //在HTML中把事件处理函数作为属性执行JS代码 <input type="button" va
汤高
2018/01/11
3.2K0
Javascript中的事件
事件委托和移除 为提升性能,利用事件冒泡来减少事件处理程序;在DOM元素被innerHTML移除后,需要手动的移除事件处理程序 事件模拟
宅蓝三木
2024/10/09
1100
原生 JS DOM 常用操作大全
页面中所有的内容都为节点,节点使用 node 来表示 DOM 树可以把节点划分为不同的层级关系,常见的是父子兄层级关系
FGGIT
2024/10/15
1840
JavaScript(十二)
这一篇,我们讲讲 JavaScript 中非常重要的概念 —— 事件。 JavaScript 与 HTML 之间的交互是通过事件实现的。
1ess
2021/11/01
3.1K0
相关推荐
WEB入门之十四 jQuery事件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验