Javascript事件
JS鼠标事件

JS鼠标事件
JS鼠标事件是指在使用JavaScript编写网页的时候可以通过监听用户的鼠标行为来做出相应的动作。
当鼠标移动、点击、双击或者悬停到
特定的元素上时,JavaScript会捕获这些行为,并执行一些相应的操作。
JS中操作鼠标事件有以下常用事件:
1、onmouseover:当鼠标悬停在元素上时触发;
2、onmouseout:当鼠标离开该元素时触发;
3、onmousedown:当鼠标点击元素时触发;
4、onmouseup:当鼠标松开时触发;
5、onclick:当鼠标点击时触发;
6、ondblclick:当鼠标双击元素时触发;
7、onmousemove:当鼠标移动到元素上时触发;
8、oncontextmenu:当鼠标右键点击元素时触发;
9、onmouseenter:当鼠标进入元素时触发;
10、onmouseleave:当鼠标离开元素时触发。
使用这些事件,我们可以让网页在响应鼠标动作时可以立刻显示出来,比如当鼠标悬停到某个按钮上时,立刻显示弹出框,提示用户具体操
作等等。
当然,也可以添加其他JS鼠标事件来提升网页的交互性,比
如拖拽、右击等功能。
总之,JS鼠标事件为网页开发者提供了一系列
极其有用的功能,可以给网页带来更好的用户体验。
JavaScript事件属性event.target和currentTarget属性的区别。

JavaScript事件属性event.target和currentTarget属性的区别。
event.target 获取的是触发事件的标签元素event.currentTarget 获取到的是发起事件的标签元素⼀、事件属性:event.targettarget事件委托的定义:本来该⾃⼰⼲的事,但是⾃⼰不⼲,交给别⼈来⼲例⼦11<!DOCTYPE html>2<html>34<head>5<meta charset="UTF-8">6<title></title>7<style type="text/css">8 #main {9 width: 200px;10 height: 100px;11 background: red;12 }13</style>14<script type="text/javascript">15 window.onload = function() {16 document.getElementById("main").onclick = function(e) {17/*这⾥e等于window.event也可以写成event.*/18 console.log(e.target); //<div id="main" class="sb js node"><span>我爱JavaScript</span></div>19 console.log(e.target.id); //main 返回点击元素⾥存在的id属性值20 console.log(e.target.tagName); //DIV21 console.log(e.target.nodeName); //DIV22 console.log(e.target.classList); //输出dom类列表,没有即空23 console.log(e.target.className); // sb js node24 console.log(e.target.innerHTML); //<span>我爱JavaScript</span>25 console.log(e.target.innerText); //我爱JavaScript2627 console.log("----------------------------------------------------")2829 console.log(e.type); //获取事件类型:click30 console.log(event.pageX+":"+event.pageY); //⿏标相对于⽂件的左侧和顶部边缘的位置31 console.log(event.target); //获取发起事件的标签32 console.log(event.currentTarget); //获取发起事件的标签33 console.log(event.currentTarget.id); //获取发起事件的标签⾥的id属性值34 console.log(event.which) //针对键盘和⿏标事件,这个属性能确定你到底按的是哪个键或按钮常⽤在keydown事件中35 console.log(event.timeStamp); //事件触发与事件创建之间的时间间隔36 alert("点击了id为:"+event.target.id+"的"+event.target.nodeName+"标签");3738// console.log(e.preventDefault()); //阻⽌默认事件39// console.log(e.stopPropagation()); //阻⽌事件冒泡到⽗元素40 }41 }42</script>43</head>4445<body>46<div id="main" class="js node"><span>我爱JavaScript</span></div>47</body>4849</html>View Code输出如下:tip:给⽹页⾥ID为main的div标签绑定了⼀个⿏标点击事件,⽽在实际中,在点击了这个div内的所有⼦标签时,都会触发这个事件,这个过程就是“冒泡”例⼦中的事件传播顺序:在冒泡型事件流中,是span> div > body > html > document。
javascript的常用事件有哪些

javascript的常⽤事件有哪些javascript常⽤事件:click、dblclick、mouseup、mouseout、keypress、keydown、keyup、error、load、resize、unload、blur、change、focus、reset等。
JavaScript 的⼀个基本特征就是事件驱动。
所谓事件驱动,就是当⽤户执⾏了某种操作或 Javascript 和 html 交互后导致了某种状态改变后,会因此⽽引发⼀系列程序的响应执⾏。
在这⾥,⽤户的操作称为事件,程序对事件作出的响应称为事件处理。
事件处理,是指程序对事件作出的响应。
事件,对 JavaScript 来说,就是⽤户与 Web 页⾯交互时产⽣的操作或 Javascript 和 html 交互后导致发⽣变化某种状态的事情,⽐如移动⿏标、按下某个键、单击按钮等操作以及表⽰ Ajax 的⼯作状态发⽣变化、表⽰动画已经完成运⾏等。
事件处理中涉及的程序称为事件处理程序。
事件处理程序通常定义为函数。
在 Web 页⾯中产⽣事件的界⾯元素,称为事件源。
在不同事件源上可以产⽣相同类型的事件,同⼀个事件源也可以产⽣不同类型的事件。
JS 程序通过指明事件类型和事件源,并对事件源绑定事件处理程序,这样,⼀旦事件源发⽣指定类型的事件,浏览器就会调⽤事件源所绑定的处理程序进⾏事件处理。
所以事件处理涉及的⼯作包括事件处理程序的定义及其绑定。
在 Web 页⾯中,⽤户可进⾏的操作有很多,⽽每⼀种操作都将产⽣⼀个事件。
下⾯给⼤家介绍⼀下javascript常⽤事件。
JavaScript 常⽤事件事件描述⿏标事件 click ⽤户单击⿏标时触发此事件dblclick ⽤户双击⿏标时触发此事件mousedown ⽤户按下⿏标时触发此事件mouseup ⽤户按下⿏标后松开⿏标时触发此事件mouseover 当⽤户将⿏标的光标移动到某对象范围的上⽅时触发此事件mousemove ⽤户移动⿏标时触发此事件mouseout 当⽤户⿏标的光标离开某对象范围时触发此事件mousewheel 当滚动⿏标滚轮时发⽣此事件,只针对 IE 和 Chrome 有效DOMMouseScroll 当滚动⿏标滚轮时发⽣此事件,针对标准浏览器有效键盘事件 keypress 当⽤户键盘上的某个字符键被按下时触发此事件keydown 当⽤户键盘上某个按键被按下时触发此事件keyup 当⽤户键盘上某个按键被按下后松开时触发此事件窗⼝事件 error 加载⽂件或图像发⽣错误时触发此事件load 页⾯内容加载完成时触发此事件resize 当浏览器的窗⼝⼤⼩被改变时触发此事件unload 当前页⾯关闭或退出时触发此事件表单事件 blur 当表单元素失去焦点时触发此事件click ⽤户单击复选框、单选框、普通按钮、提交按钮和重置按钮等按钮时触发此事件change 表单元素的内容发⽣改变并且元素失去焦点时触发此事件focus 当表单元素获得焦点时触发此事件reset ⽤户单击表单上的重置按钮时触发此事件select ⽤户选择了⼀个 input 或 textarea 表单元素中的⽂本时触发此事件submit ⽤户单击提交按钮提交表单时触发此事件。
第七章 JavaScript事件

Page 13
三、事件处理程序
前面我们已经介绍过,响应某个事件的函数就叫事件处理 程序。为事件绑定事件处理程序的方式主要有以下三种: HTML事件处理程序 该方法是直接在HTML标记中指定事件处理程序。如:
或者
例题7-2.html
7-2-1.html
Page 14
三、事件处理程序
* 缺点:HTML与JavaScript代码紧密耦合。如果要更换事件 处理程序,就用改动两个地方:HTML代码和JavaScript代 码。 DOM 0级事件处理程序 ☞ 添加事件处理程序:对象.事件=事件处理程序
二、事件流
单击<div>M事件流中,实际的目标(<div>元素)在捕获阶段捕获接收到事 件。这意味着在捕获阶段,事件从document到<html>再到<body>后就 停止了。下一个阶段是“处于目标”阶段,于是事件在<div>上发生, 并在事件处理中被看成冒泡阶段的一部分。然后,冒泡阶段发生,事 件又传播回文档。
Page 23
四、事件对象
属性/方法 preventDefault() stopImmediatePr opagation() 类型 读/写 说明 取消事件的默认行为,如果cancelable是true ,则可以使用这个方法 取消事件的进一步捕获或冒泡,同时阻止任何 事件处理程序被调用
Function 只读 Function 只读
也就是说,click事件首先在<div>元素上发生,而这个元素就是我们 单击的元素,然后,click事件沿着DOM树向上传播,在每一级节点上 都会发生,直至传播到document对象。如下图:
*所有现代浏览器都支持事件 冒泡,IE9、FF、Chrome、 Safari会将事件一直冒泡到 window对象。
js中event的用法

js中event的用法在JavaScript中,事件(event)是指用户与网页或应用程序进行交互时发生的动作或操作。
通过捕捉事件,我们可以执行一些特定的代码来响应用户的操作。
在本文中,我们将介绍JS中事件的基本概念、事件的类型、事件监听器的使用、事件对象的属性和方法以及一些常见的事件示例。
事件的基本概念:在Web开发中,事件是指由用户执行的动作,比如点击鼠标、按下键盘、滚动页面等。
当这些事件发生时,我们可以捕捉并执行一些与之相关的代码。
事件可以在浏览器内部和页面元素之间进行传递。
在JS中,每个事件都有一个对应的事件处理器(event handler),用于处理该事件发生时要执行的代码。
事件的类型:在JS中,有各种各样的事件类型,可以满足不同的需求。
常见的事件类型包括:- 鼠标事件:比如点击(click)、双击(dblclick)、移动(mousemove)、进入(mouseover)和离开(mouseout)等。
- 键盘事件:比如按下一些键(keydown)或释放一些键(keyup)等。
- 表单事件:比如提交表单(submit)、改变输入内容(change)等。
- 页面事件:比如页面加载完成(load)、页面滚动(scroll)、窗口大小改变(resize)等。
- 多媒体事件:比如视频播放(play)和音频暂停(pause)等。
事件监听器的使用:要捕捉事件并执行相应的代码,我们可以使用事件监听器(event listener)或事件处理器。
事件监听器用于“监听”特定的事件,并指定当事件发生时要执行的代码。
在JS中,我们可以使用addEventListener(方法来添加事件监听器。
该方法接受三个参数:事件名称、事件处理函数和一个可选的布尔值,用于指定事件的传播方式。
下面是一个例子,展示如何使用addEventListener(方法来添加一个鼠标点击事件监听器:```javascriptdocument.addEventListener('click', functioalert('鼠标点击了页面!');});```事件对象的属性和方法:在事件处理函数中,我们可以通过事件对象(event object)来访问和操作事件的属性和方法。
JavaScript创建和触发自定义事件

JavaScript 创建和触发⾃定义事件第⼀种第⼀种使⽤使⽤Event 构造函数创建事件构造函数创建事件::event = new Event(typeArg, eventInit);typeArg :指定事件类型,传递⼀个字符串。
这⾥的事件类型指的是像点击事件(click )、提交事件(submit )、加载事件(load )等等。
eventInit :可选,传递EventInit 类型的字典。
实际上这个EventInit 类型的字典也就是我们使⽤InitEvent()时需要传递的参数,以键值对的形式传递,不过它可以多选⼀个参数:bubbles :事件是否⽀持冒泡,传递⼀个boolean 类型的参数,默认值为false 。
cancelable :是否可取消事件的默认⾏为,传递⼀个boolean 类型的参数,默认值为false 。
composed :事件是否会触发shadow DOM (阴影DOM )根节点之外的事件监听器,传递⼀个boolean 类型的参数,默认值为false 。
const event = new Event('build');// Listen for the event.elem.addEventListener('build', function (e) { /* ... */ }, false );// Dispatch the event.elem.dispatchEvent(event);不适⽤Internet Explorer 浏览器第⼆种CustomEvent 对象的构造函数CustomEvent()可以像Event()那样赋值,但它可以在Web Workers 中使⽤(与主线程分离的另⼀个线程),可以传递跟事件关联的相关值(detail )event = new CustomEvent(typeArg, customEventInit);typeArg ⼀个表⽰ event 名字的字符串customEventInit 可选detail :可选的默认值是 null 的任意类型数据,是⼀个与 event 相关的值bubbles :⼀个布尔值,表⽰该事件能否冒泡。
js触发事件的方法

js触发事件的方法JavaScript中,触发事件的方法是非常重要的,它可以让我们在页面上动态响应用户的行为,从而提高我们页面的交互性和用户体验。
在本篇文章中,我们将深入探讨JS触发事件的方法。
一、addEventListener()方法addEventListener()方法是JS中使用最多的事件绑定方法之一,它能够捕获指定事件类型的所有事件,并将它们处理成指定的回调函数。
我们来看一下使用addEventListener()方法的语法:element.addEventListener(event, function, useCapture)参数说明:event:必须。
字符串,表示要接收的事件类型,比如click、mousedown等。
function:必须。
事件触发时执行的回调函数。
useCapture:可选。
Boolean类型,表示是否使用事件捕获模式。
默认情况下为false,即使用事件冒泡模式。
二、onclick()方法onclick()方法是一种特殊的事件触发方法,它只能用于鼠标单击事件。
当鼠标单击元素时,onclick()方法会触发指定的回调函数。
我们来看一下onclick()方法的语法:element.onclick = function;参数说明:function:必须。
事件触发时执行的回调函数。
三、dispatchEvent()方法dispatchEvent()方法是JS中另一种触发事件的方法,它可以模拟任何类型的事件,如鼠标事件、键盘事件等等。
使用dispatchEvent()方法时需要先创建一个Event对象,然后通过dispatchEvent()方法触发该对象。
我们来看一下dispatchEvent()方法的语法:element.dispatchEvent(event)参数说明:event:必须。
Event对象,表示要触发的事件类型。
四、fireEvent()方法在IE浏览器中,我们可以使用fireEvent()方法来触发事件。
JS——各种事件

JS——各种事件⿏标事件⿏标事件指与⿏标相关的事件(滚轮),继承了MouseEvent接⼝。
问:⿏标事件有哪些?click , dblclick , mousedown , mouseup ,mousemove , mouseenter , mouseover , mouseout , mouseleave , contextmenu( 按下右键), wheel(滑轮滚动)【后⾯这两个也是,别忘记】mouseenter事件只触发⼀次,在⽗节点内部进⼊⼦节点,不会触发mouseenter事件,但是会触发mouseover事件。
mouseout事件和mouseleave事件,都是⿏标离开⼀个节点时触发。
两者的区别是,在⽗元素内部离开⼀个⼦元素时,mouseleave事件不会触发,⽽mouseout事件会触发。
(mouseover与mouseout这两个O字母开头的事件会受到⿏标在⼦⽗亲之间变化的影响)MouseEvent实例属性有哪些?MouseEvent接⼝继承了Event接⼝,所以拥有Event的所有属性和⽅法。
它还有⾃⼰的属性和⽅法。
screenX (屏幕), screenY , clientX(程序窗⼝),offsetX(返回⿏标位置与⽬标节点左侧的padding边缘的⽔平距离(单位像素)) , offsetY, clientY ,pageX,pageY(属性返回与⽂档上侧边缘的距离(单位像素)。
它们的返回值都包括⽂档不可见的部分。
这两个属性都是只读。
) ctrlKey (是否按下了ctrl键,返回布尔), shiftKey , altKey , button(左键的值为0,中间1,右键2)举个例⼦:实例⽅法:getModifierState:⽅法返回⼀个布尔值,表⽰有没有按下特定的功能键。
它的参数是⼀个表⽰的字符串wheel事件:WheelEvent 接⼝继承了 MouseEvent 实例,代表⿏标滚轮事件的实例对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
获取事件对象的全家事件对象的获取很简单,很久前我们就知道IE中事件对象是作为全局对象( window.event )存在的,Firefox中则是做为句柄( handler )的第一个参数传入内的。
所以一行代码就可以搞定view sourceprint?1var evt = window.event || arguments[0];下面分三种添加事件的方式讨论,你也许会看到以前没有看到过的获取方式。
1,第一种添加事件的方式,直接在html的属性中写JS代码view sourceprint?1<div onclick="alert(4);">Div1 Element</div>大概这是上世纪90年代的写法,那时候直接把js代码写在网页中很普遍,也许那时候的js并不太重要,只是用来做做验证或一些花哨的效果而已。
如何在这种添加事件方式下获取到事件对象?IE中很简单,因为event是作为全局对象的,所以直接使用event即可,如下view sourceprint?1<div onclick="alert(window.event.type);">Div1 Element</div>点击该Div后,IE中会弹出'click'字符的信息框。
说明事件对象获取到了,如果在Opera/Safari/Chrome 中也测试了,会发现效果和IE一样,说明Opera/Safari/Chrome 中也支持IE方式( window.event )获取事件对象。
Firefox中会报错,提示:window.event is undefined,说明Firefox不支持IE方式获取事件对象而是以句柄的第一个参数传入的,文章开头意见提到了。
上面的用window.event 来获取事件对象,其实window可以省略的,就像使用alert而不是window.alert一样。
如view sourceprint?1<div onclick="alert(event.type);">Div1 Element</div>在IE/Opera/Safari/Chrome 中测试,和刚刚不会有什么区别。
在Firefox中再测,会有个惊喜,你会发现居然弹出的是"click"信息框,而不是"undefined"。
两次测试区别仅仅一个用window.event.type,一个用event.type。
这个问题下面详细讨论。
下面用句柄第一个参数来获取事件对象,可以把onclick属性的值想象成一个匿名函数,onclick 属性值的字符串实际上都是这个匿名函数内的js代码。
既然这样,我们就可以通过Function的一个属性argumengs获取到该匿名函数的第一个参数,而该参数就是事件对象。
如view sourceprint?1<div onclick="alert(arguments[0].type);">Div1 Element</div>IE中会报错,提示:arguments.0.type为空或不是对象Firefox/Opera/Safari/Chrome 中会弹出"click"内容的信息框,说明他们都支持事件对象作为句柄第一个参数传入。
从侧面也说明了Opera/Safari/Chrome 不仅支持W3C标准方式获取事件对象,同时也兼容了IE方式获取事件对象。
既然知道onclick对应的是一个匿名函数,我们不妨把该匿名函数打印出来看看,只需以下代码view sourceprint?1<div onclick="alert(arguments.callee);">Div1 Element</div>在各浏览器中点击该Div,结果如下:IE6/7/8 :function onclick(){ alert(arguments.callee);}IE9 :function onclick(event){ alert(arguments.callee);}Firefox / Safari :function onclick(event) { alert(arguments.callee);}Chrome :function onclick(evt) { alert(arguments.callee);}Opera :function anonymous(event) {alert(arguments.callee);}观察这些函数发现:IE6/7/8没有定义参数IE9/Firefox/Safari/Opera 定义了参数eventChrome定义了参数evt。
现在回到上面遗留的问题,如下view sourceprint?1<div onclick="alert(window.event.type);">Div1 Element</div>2<div onclick="alert(event.type);">Div1 Element</div>这两个div的区别仅window.event.type和event.type。
分别点击后,后者在Firefox中不弹出"undefined",而是"click",是因为Firefox中匿名函数定义了参数event,该参数刚好与IE的全局对象event同名,从而误以为Firefox也支持IE方式获取事件对象。
同样的道理,Chrome中定义的参数是evt,那么在Chrome中还可以通过以下方式获取事件对象,如下view sourceprint?1<div onclick="alert(evt);">Div1 Element</div>2,第二种添加事件的方式,定义一个函数,赋值给html元素的onXXX属性view sourceprint?1<script type="text/javascript">2 function clk(){}3</script>4<div onclick="clk()">Div2 Element</div>先定义函数clk,然后赋值给onclick属性,这种方式也应该属于上世纪90年代的流行写法。
比第一种方式好的是它把业务逻辑代码都封装在一个函数里了,使HTML代码与JS代码稍微有点儿分离,不至于第一种那么紧密耦合。
如何在这种方式(clk函数内)中获取事件对象?IE中使用全局对象event仍然没问题,如: view sourceprint?1<script type="text/javascript">2 function clk(){alert(window.event);}3</script>4<div onclick="clk()">Div2 Element</div>点击Div后,除Firefox外,IE/Opera/Safari/Chrome都能正常获取事件对象。
上面已经提到了Opera/Safari/Chrome 兼容IE方式(window.event)获取事件对象,而唯独Firefox 不支持。
从而Firefox中只能通过参数传入了。
试着这么写view sourceprint?1<script type="text/javascript">2 function clk(){alert(event);}3</script>4<div onclick="clk()">Div2 Element</div>因为在Firefox中匿名函数是具有event参数的,而clk()是在匿名函数之内的,打印出匿名函数便知view sourceprint?1<script type="text/javascript">2 function clk(){alert(arguments.callee.caller);}3</script>4<div onclick="clk()">Div2 Element</div>点击该Div,Firefox弹出信息框内容如下view sourceprint?1function onclick(event) {2 clk();3}回到clk中的alert(event),既然匿名函数的event传入了,那么在该闭包中clk是可以获取到event的,事实上点击后Firefox会报错:event is not defined。
猜测该匿名函数的闭包和function clk(){alert(event);}不是同一个闭包环境。
这种方式不行,则只能通过显示的参数传入了,如view sourceprint?1<script type="text/javascript">2 function clk(e){alert(e);}3</script>4<div onclick="clk(arguments[0])">Div2 Element</div>点击Div,在Firefox中正确弹出了事件对象,支持参数传入的浏览器都可以,如Opera/Safari/Chrome。
把以上代码中的arguments[0]改成event,那么所有浏览器都支持。
把以上代码中的arguments[0]改成window.event,那么将只有Firefox不支持。
把以上代码中的arguments[0]改成evt,那么将只有Chrome支持。
思考下为什么?3,第三种添加事件方式,使用element.onXXX方式view sourceprint?01<div id="d3">Div3 Element</div>02<script type="text/javascript">03 var d3 = document.getElementById('d3');04 function clk(){alert(4)}0506 if(d3.addEventListener){07 d3.addEventListener('click',clk,false);08 }09 if(d3.attachEvent){10 d3.attachEvent('onclick',clk);11 }12</script>这种方式也比较早期,但好处是可以将js与html完全分离,但前提是需要给html元素提供一个额外的id属性(或其它能获取该元素对象的方式)。