鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover
之后如果光标继续在元素上移动,则不断触发mousemove
如果按下鼠标上的设备(左键,右键,滚轮……),则触发mousedown
当设备弹起的时候触发mouseup
目标元素的滚动条发生移动时(滚动滚轮/拖动滚动条。。)触发scroll
滚动滚轮触发mousewheel,这个要区别于scroll
鼠标移出元素的那一刻,触发mouseout
事件注册
平常我们绑定事件的时候用dom.onxxxx=function(){}的形式
这种方式是给元素的onxxxx属性赋值,只能绑定有一个处理句柄。
但很多时候我们需要绑定多个处理句柄到一个事件上,而且还可能要动态的增删某个处理句柄
下面的事件注册方式就能解决这个需求。
先介绍一下四个方法 复制代码 代码如下:
//IE以外
target.addEventListener(type,listener,useCapture)
target.removeEventListener(type,listener,useCapture);
target :文档节点、document、window 或 XMLHttpRequest。
type :字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。
listener :实现了 EventListener 接口或者是 JavaScript 中的函数。
useCapture :是否使用捕捉,一般用 false。
//IE
target.attachEvent(type, listener);
target.detachEvent(type, listener);
target :文档节点、document、window 或 XMLHttpRequest。
type :字符串,事件名称,含“on”,比如“onclick”、“onmouseover”、“onkeydown”等。
listener :实现了 EventListener 接口或者是 JavaScript 中的函数。
两者使用的原理:可对执行的优先级不一样,实例讲解如下:
ele.attachEvent("onclick",method1);
ele.attachEvent("onclick",method2);
ele.attachEvent("onclick",method3);
执行顺序为method3->method2->method1
ele.addEventListener("click",method1,false);
ele.addEventListener("click",method2,false);
ele.addEventListener("click",method3,false);
执行顺序为method1->method2->method3
兼容后的方法
var func = function(){};
//例:addEvent(window,"load",func)
function addEvent(elem, type, fn) {
if (elem.attachEvent) {
elem.attachEvent('on' + type, fn);
return;
}
if (elem.addEventListener) {
elem.addEventListener(type, fn, false);
}
}
//例:removeEvent(window,"load",func)
function removeEvent(elem, type, fn) {
if (elem.detachEvent) {
elem.detachEvent('on' + type, fn);
return;
}
if (elem.removeEventListener) {
elem.removeEventListener(type, fn, false);
}
}
获取事件对象和事件源(触发事件的元素)
复制代码 代码如下:
function eventHandler(e){
//获取事件对象
e = e || window.event;//IE和Chrome下是window.event FF下是e
//获取事件源
var target = e.target || e.srcElement;//IE和Chrome下是srcElement FF下是target
}
取消事件默认行为(例如点击一个<a>后不跳转页面而是执行一个函数)
复制代码 代码如下:
function eventHandler(e) {
e = e || window.event;
// 防止默认行为
if (e.preventDefault) {
e.preventDefault();//IE以外
} else {
e.returnValue = false;//IE
//注意:这个地方是无法用return false代替的
//return false只能取消元素
}
}
阻止事件冒泡
复制代码 代码如下:
function myParagraphEventHandler(e) {
e = e || window.event;
if (e.stopPropagation) {
e.stopPropagation();//IE以外
} else {
e.cancelBubble = true;//IE
}
}
事件委托
例如,你有一个很多行的大表格,在每个<tr>上绑定点击事件是个非常危险的想法,因为性能是个大问题。流行的做法是使用事件委托。
事件委托描述的是将事件绑定在容器元素上,然后通过判断点击的target子元素的类型来触发相应的事件。
事件委托依赖于事件冒泡,如果事件冒泡到table之前被禁用的话,那以下代码就无法工作了。
复制代码 代码如下:
myTable.onclick = function () {
e = e || window.event;
var targetNode = e.target || e.srcElement;
// 测试如果点击的是TR就触发
if (targetNode.nodeName.toLowerCase() === 'tr') {
alert('You clicked a table row!');
}
}
事件(Event)知识整理(二)
事件流
DOM同时支持两种事件模型:捕获型事件和冒泡型事件
并且每当某一事件发生时,都会经过捕获阶段->处理阶段->冒泡阶段(有些浏览器不支持捕获)
捕获阶段是由上层元素到下层元素的顺序依次。而冒泡阶段则正相反。
如下图
当事件触发时body会先得到有事件发生的信息,然后依次往下传递,直到到达最详细的元素。这就是事件捕获阶段。
还记得事件注册方法ele.addEventListener(type,handler,flag)吧,Flag是一个Boolean值,true表示事件捕捉阶段执行,false表示事件冒泡阶段执行。
接着就是事件冒泡阶段。从下往上 依次执行事件处理函数(当然前提是当前元素为该事件注册了事件句柄)。
在这个过程中,可以阻止事件的冒泡,即停止向上的传递。
阻止冒泡有时是很有必要的,例如
复制代码 代码如下:
<div onclick=funcA()>
<button onclick=funcB()>Click</button>
</div>
本意是如果点击div中按钮以外的位置时执行funcA,点击button时执行funcB。但是实际点击button时就会先后执行funcB,funcA。
而如果在button的事件句柄中阻止冒泡的话,div就不会执行事件句柄了。
相关推荐:
了解SEO:让你的网站在搜索引擎中脱颖而出的秘密武器,宝山区常见网站优化
未来科技:AI工具为生活赋能,打造智能未来
AI一键生成文章,写作新境界
SEO项目:如何通过精确优化提升企业网站排名与转化率,武汉做网站优化的公司
SEO领先-如何借助SEO技术让您的网站脱颖而出,seo是黑客吗
SEO深度解析:如何通过深度优化提升网站排名,带来流量和转化,咸宁网站建设大概费用
SEO售产-数字营销新战场,助力企业实现盈利增长,去哪找自贡网站建设
SEO查:如何用精准的SEO诊断助力网站流量爆发,美团关键词排名怎么补
AI热门软件,未来科技的钥匙
未来写作新方式原创AI文章的无限可能
如何识别文章是否由AI撰写?揭开智能写作的秘密
AI智能时代的到来:如何利用人工智能推动生活与商业创新,ai相册下载
交友群都有哪些,交友群是干什么的 ,ai猫csgo
SEO工装裤-打造时尚与实用兼备的工作利器,ai画中国爸爸辅导孩子写作业
GPT人工智能-让未来触手可及的智慧之光,ai头花写真
AI免费生成文章让创作变得轻松自如
SEO优化公司一般怎么优化?揭秘专业SEO服务的操作流程,人工智能ai写作软件 哪一个好
丹东抖音seo是什么,抖音seo引流 ,ai工具编写作业指导书
SEO优化做什么的?揭秘SEO优化的核心价值与实战应用,ai做金色
SEO字:如何通过精准关键词提升网站流量与排名,赣州于都网站推广
seo需要学些什么内容,学seo的基础 ,中国ai公司年收入
ChatGPT免费版下载:智能对话助手带来的全新体验,电脑怎么下载Ai微认证
ChatGPT-4中文免费破解版:无需付费,体验最强AI助手,ai写作生成器官方下载
【SEO优化全攻略】提升网站流量的终极秘籍,带你轻松玩转搜索引擎优化!,金融网站推广维护
常用AI工具,高效智能生活
SEO手法如何通过精准优化提升网站排名,获取海量流量,网站建设协议流程是什么
丹东seo是什么怎么选,丹东spr ,黑发ai图
为什么“搜狗不收录”会成为企业SEO的新挑战?,烤肉店的线下营销与推广
《SEO教材:打造网站流量的核心利器,教你轻松SEO优化技巧》,咖啡网站建设总结文案
为什么做seo的人很少,为了什么做seo ,ai不负你
文章AI生成软件高效创作新纪元
ChatGPT付款被拒?如何应对与解决常见支付问题,掉包ai
AI缩写在线:让人工智能助力你行业前沿技术,ai uhrehara
seo竞价做的什么工作,seo 竞价 ,office智能ai
SEO优化10种策略:提升网站排名的有效方法,帅气ai男头白底
seo给你什么帮助,seo的利与弊 ,ai 大厨
SEO要素:优化网站排名的关键因素全解析,棒球大联盟营销推广文案
wordpress seo是什么,wordpress建站seo好做吗 ,学习图文ai
ChatGPT故障你从未听过的真相,究竟是什么让它偶尔“失灵”?,ai 图片 矢量
优化百:开启数字时代的智能营销新时代,湘潭seo优化报价表
AI网页生成:轻松构建智能网站,提升品牌竞争力,杭州专业ai智能教育
AI工具汇总网站,让科技为您的工作加速
AI免费生成文章的软件:轻松创作的秘密武器
为什么seo这么麻烦,seo是什么意思 为什么要做seo ,dota1ai地图命令选ai
ChatGPT当前不可用?背后的原因与解决方案全解析,ai propos
什么是seo公司口碑,seo品牌 ,ai大模型训练是什么意思
用AI征文工具,轻松创作出精彩文章!
ChatGPT页面怎么拖不动?解决问题的终极指南,日韩AI换脸在线观看
SEO调整,助力网站流量爆发式增长!,江都seo优化排名
如何选择适合你的AI工具?全面解析AI工具哪个好用