首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面试官:哪些浏览器事件不会冒泡?

回答这个问题之前,我们首先要具备DOM事件流捕获与冒泡的知识,这里JS中如何设置这两种事件监听,例如对body注册点击事件:document.body.addEventListener('click...在JS中通常利用冒泡来进行事件委托,但并不是所有事件都会冒泡。下面我们看看哪些事件是不能冒泡的,又有哪些相关应用场景。...注意:有个类似滚动事件的叫滚轮事件wheel是可以触发冒泡的( MDN - wheel_event ),我们甚至可以通过额外注册 wheel 监听事件并阻止其冒泡从而 scroll 事件失效,不过只要滚动条还在...scroll 还是可以不通过滚轮来控制滚动的,所以还记得前面我们怎么元素滚动起来的吗?...上还是触发了 ul 的监听事件,其实这并不符合常理,因为此时鼠标还是在 ul 内的。

1.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

函数的防抖与节流

特点: 不管事件触发有多频繁,都会保证在规定的间隔时间内真正的执行一次事件处理函数,只会一个函数在某个时间窗口内执行一次,若在时间窗口内再次触发,则重新计算时间 应用场景: 常用于鼠标连续多次点击click...事件,鼠标移动mousemove,拖拽,窗口尺寸改动(resize),鼠标滚轮页面上拉(onScroll),上拉刷新懒加载 原理: 通过判断是否达到一定的时间来触发函数,若没有规定时间则使用计时器进行延迟...,而下一次事件则会重新设定计时器,它是间隔时间执行 通常与用户界面高频的操作有: 鼠标滚轮页面上拉(onScroll),下拉刷新懒加载 窗口尺寸改动(onresize) 拖拽 若是高频操作,若不进行一定的处理...,监听滚动事件,连续下拉加载等请求服务器的资源 要节流,拧紧水龙头,要它的流水频率降低,每隔一段时间滴一滴水的,从而节省资源 在代码中的体现就是:设置一定时器,核心功能代码,隔间段的去执行 下面是一个鼠标滚轮...函数防抖 定义:防止抖动,重复的触发,频繁操作,核心在于,延迟事件处理函数的执行,一定时间间隔内执行最后一次操作,就是当函数被触发后,只有在上一次函数执行完,一段时间后,才会再次触发函数。

19020

Vue 实现图片监听鼠标滑轮滚动实现图片缩小放大功能

实现思路在js中,onmousewheel是鼠标滑轮滚动事件,可以通过这个事件触发来改变图片的大小,实现图片放大缩小功能。但是我们这里是vue所以使用的是:mousewheel。...,显而易见动动鼠标滚轮就能触发事件,但是用光标拖拽滚动条就不能触发事件。...有火狐鼠标滚轮兼容问题。onmousewheelonmousewheel事件:会在鼠标滚轮滚动的时候被触发,对鼠标滚轮是否滚动进行判断,但是火狐浏览器不支持这个属性。...event.wheelDellta:可以用来获取鼠标的滚动方向,对于得到的值,看正负,往上滚是正值,往下滚是负值。...在页面有滚动条的时候,滚动条会随着鼠标滚轮滚动而滚动,这是浏览器的默认行为,可用return false来取消浏览器的默认行为。有火狐鼠标滚轮兼容问题。

3.4K20

jQuery 之 元素节点操作滚轮事件与函数节流

在现存元素的外部,从后面插入元素 4、before()和insertBefore():在现存元素的外部,从前面插入元素 删除节点 : $('#div1').remove(); todolist(计划列表)实例 滚轮事件与函数节流...jquery.mousewheel插件使用 jquery中没有鼠标滚轮事件,原生js中的鼠标滚轮事件不兼容,可以使用jquery的滚轮事件插件jquery.mousewheel.js。...函数节流 javascript中有些事件触发频率非常高,比如onresize事件(jq中是resize),onmousemove事件(jq中是mousemove)以及上面说的鼠标滚轮事件,在短事件内多处触发执行绑定的函数...,可以巧妙地使用定时器来减少触发的次数,实现函数节流。.../jquery-1.12.4.min.js"> </script

1.3K60

浅谈JavaScript的事件事件类型)

DOM3级的事件类型主要包括:UI事件,用户与页面上的元素交互时触发;焦点事件,元素获得或失去焦点触发鼠标事件,用户通过鼠标在页面上执行操作时触发滚轮事件,使用鼠标滚轮触发;文本事件,当在文档中输入文本时触发...鼠标滚轮事件   鼠标事件是WEB开发中最常用的事件。...DOM3级中定义了9个鼠标事件:click事件,用户单击鼠标左键触发事件或者按下enter键触发;dbclick事件,用户双击鼠标左键的时候触发;mousedown事件,用户按下鼠标按钮时触发;mouseenter...鼠标滚轮事件就是mousewheel事件,这个事件跟踪鼠标滚轮。...IME可以用户输入在键盘上找不到的字符。IME通常需要同时多个字符来确定一个字符,比如中文的输入。

1.8K50

JS事件

---IE8及以下的浏览器不支持,正常浏览器不支持 attachEvent---支持IE8及以下的浏览器 兼容上面两者的写法 事件的传播 拖拽案例---鼠标按下,移动,松开事件 鼠标滚轮事件----onmousewheel...,需要设置一个绝对路径 var d1=document.getElementById("d1"); //这里触发鼠标移动事件应该是整个页面,不然鼠标移动出了div,事件就失效了...; var ly=event.clientY-obj.offsetTop; //当触发鼠标按下事件之后,obj会跟随鼠标移动 //即触发鼠标在当前页面的移动事件...确保是一次事件 documnet.onmouseup=null; //当鼠标松开时,释放点击事件的捕获 //浏览器兼容性 obj.releaseCapture...替代 d1.onmousewheel=function() { alert("鼠标滚轮滚动了"); }; //为div绑定一个鼠标滚轮事件

12.6K10

接上一篇事件详解

鼠标事件:当用户通过鼠标在页面操作时触发; click事件:在用户单击鼠标按钮或者按下回车键触发; dblclick事件:在用户双击鼠标按钮时被触发; mousedown事件:在用户按下了任意鼠标按钮时被触发...mouseenter事件:在鼠标光标从元素外部移动到元素范围之内被触发;这个事件不冒泡; mousemove事件:当鼠标指针在元素内部移动时重复地触发。...mouseover事件鼠标指针在元素外部,用户将移入另一个元素的边界时触发,感觉和mouseenter事件类似; mouseup事件:用户释放鼠标按钮时触发; 页面上所有的元素都支持鼠标事件,除了mouseenter...也都实现了这个事件,当用户通过鼠标滚轮与页面交互,在垂直方向上滚动页面时(无论向上还是向下),就会触发mousewheel事件,这个事件可以在任何元素上触发,最终会冒泡到document(IE8)或window...,也是在鼠标滚轮滚动时触发,与mousewheel事件一样,但是他的有关鼠标滚轮信息保存在detail属性中,当鼠标向前滚动时,这个属性值是-3的倍数,当鼠标滚轮向后滚动时,这个属性值是3的倍数;也可以给

1.8K60

JavaScript(进阶)

, 这个事件对象中封装了当前事件的相关信息,比如:鼠标的坐标,键盘的按键,鼠标的按键,滚轮的方向。。...(Bubble) 事件的冒泡指的是事件向上传导,当后代元素上的事件触发时,将会导致其祖先元素上的同类事件也会触发。...,向目标元素进行事件的捕获,但是默认此时不会触发事件 目标阶段 事件捕获到目标元素,捕获结束开始在目标元素上触发事件 冒泡阶段 事件从目标元素向他的祖先元素传递,依次触发祖先元素上的事件 如果希望在捕获阶段就触发事件...onmousewheel 鼠标滚轮滚动的事件,会在滚轮滚动时触发,但是火狐不支持该属性 在火狐中需要使用 DOMMouseScroll 来绑定滚动事件,注意该事件需要通过 addEventListener...onkeydown——按键被按下 对于onkeydown来说如果一直按着某个按键不松手,则事件会一直触发 当onkeydown连续触发时,第一次和第二次之间会间隔稍微长一点,其他的会非常的快 这种设计是为了防止误操作的发生

1.5K20

VUE2.0 学习(一)HTML单页面使用vue技术

所以两个事件都会触发。。...a标签 once修饰符 就是这个事件只能触发一次 a标签<...,并且我们还可以手动给一个事件,就是当他滑动的时候,执行这个事件 有两种滑动,一种是用鼠标按住滑轮进行滑动,一种是滑动鼠标上面的滑轮进行滑动 用scroll 绑定滑动事件,这个是手动进行滑动进行触发,...只要到底了,事件就不会进行触发了 还有一个是wheel 事件,这个是用鼠标滚轮进行滑动 这个是只要鼠标滚轮进行滑动,就会触发事件,不管到不到底 当我们用wheel做事件,那么里面的方法如果处理的东西很多...,那么滚轮我们看不见往下,但是事件方法是一直在执行的 如果加了这个passave修饰符,那么就会看到方法和滚动条一起执行了。

1.3K21

迷你朱说,

做点击跳转, 用户点击后先跳到自己服务器上, 然后由自己的服务器做重定向, 并记录这一次请求; 3. 前端 JavaScript 监控用户鼠标行为, 并及时上报到服务器....其他的优缺点都比较容易明白, 但是 js 模式会丢 15%~20% 的数据这个非常难理解, 之前我听到 20% 这个比例, 但是没人告诉我为什么, 昨天跟死猫君说日志的时候他也提到他们那边用 js 记的日志也有...后端的思维是每发生一次事件就打一条日志, 所以极难发生日志丢失的问题....而前端不能每发生一次事件就向服务器发请求打一次日志, 这样会带来很大的网络开销并拖慢用户的浏览器, 所以前端都是把要纪录的行为在用户端先缓存, 等积累够若干条或过了若干秒后才向服务器汇总上报, 如果在这个上报条件触发前浏览器崩溃掉...另外接 js 汇报日志的服务器压力也是一个要考虑的点, 因为如果真用 js 汇报, 那一定就不止点击这点数据了, 鼠标滚轮, 悬停等事件显然是能有都有, 服务器不一定扛的过来.

43131

事件类型之鼠标事件

click:按下鼠标触发。 dblclick:在同一个元素上双击鼠标触发。 mousedown:按下鼠标键时触发。 mouseup:释放按下的鼠标键时触发。...mousemove:当鼠标在一个节点内部移动时触发。当鼠标持续移动时,该事件会连续触发。为了避免性能问题,建议对该事件的监听函数做一些限定,比如限定一段时间内只能运行一次。...mouseenter:鼠标进入一个节点时触发,进入子节点不会触发这个事件 mouseover:鼠标进入一个节点时触发,进入子节点会再一次触发这个事件 mouseout:鼠标离开一个节点时触发,离开父节点也会触发这个事件...mouseleave:鼠标离开一个节点时触发,离开父节点不会触发这个事件 wheel:滚动鼠标滚轮触发 事件注意事项 click事件指的是,用户在同一个位置先完成mousedown动作,再完成...mouseover事件和mouseenter事件,都是鼠标进入一个节点时触发。两者的区别是,mouseenter事件触发一次,而只要鼠标在节点内部移动,mouseover事件会在子节点上触发多次。

2.4K30

常见的触发函数的事件(实现不同的用户体验)

js的时候都知道,函数是我们基本上面每天都在写的一个东西,因为很多的功能是需要函数来实现的,没有函数很多的效果是没办法实现的,那么今天简单的总结一下可以触发函数的一些事件。...onclick //鼠标点击触发 应用场景:一般是button的时候,可以点击的地方会用到的一个事件。 效果实现:鼠标点击完成一次的时候触发。...onmousewheel //滚轮滚动的时候触发 应用场景:需要滚轮操作的时候 效果实现:将鼠标移动到该元素的区域,这个时候滚动您的鼠标滚轮,就会触发函数。...onkeypress //键盘完成一次按压抬起触发 应用场景:实时获取键盘输入数据 效果实现:将鼠标移动到该元素上面,这个时候按压任意字母或者数字键均可以触发,那么numlock关闭的时候呢?...这里需要说明一下,如果您调的输入法是中文的,那么您输入中文的时候是不会触发的,即使完成了一次按压,还有就是回车键和空格键是属于系统按键,但是是可以触发这个函数的。

87820

学习滚动插件iScroll的简单使用

它不支持快速跳跃,滚动条,鼠标滚轮,快捷键绑定。但如果你所需要的是滚动(特别是在移动平台) iScroll 精简版 是又小又快的解决方案(这个能应付大多数场景)。...(我正在做更多的测试,这可能最终在常规iscroll.js脚本,请留意)。 iscroll-zoom.js,在标准滚动功能上增加缩放功能。...('#wrapper'); 配置参数说明 var myScroll = new IScroll('#wrapper', { mouseWheel: true, //是否监听鼠标滚轮事件...:{tagName:/^(INPUT|TEXTAREA|BUTTON|SELECT)$/ }, //列出哪些元素不屏蔽默认事件 probeType: 3,//需要使用 iscroll-probe.js...才能生效 probeType : 1 滚动不繁忙的时候触发;probeType : 2 滚动时每隔一定时间触;probeType : 3 每滚动一像素触发一次 }); iScroll属性方法

2.8K30

jimojianghu

触控板 要禁止触控板的缩放行为,需要处理鼠标滚轮事件:wheel 。 因为笔记本触摸板双指滑动,将响应该事件,如果对该事件阻止默认行为,就能解决缩放问题了。...js 处理 使用js代码来禁止触摸屏的手指缩放,和处理触控板类似的,这里主要是监听几个手势事件,touchstart, touchend, touchmove等。...笔记本触摸板双指滑动,将响应滚轮事件,因此可以监听该事件,禁止触摸板手指缩放界面。 但需要注意滚轮默认事件,如会导致子元素滚动失效,这时候就要在子元素上阻止相同事件冒泡。...EventTarget 时触发。...添加 passive 参数为true后,touchmove 事件不会阻塞页面的滚动(同样适用于鼠标滚轮事件)。

3.7K00
领券