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

让 touch 系列事件触发滚动响应更快

1写在前面 我们都知道,对于移动端的网页而言,滚动是十分重要的交互。 然而 touch 系列事件触发滚动后)经常会引发严重的性能问题。...因而我们做出以下优化:只要 touchstart 或者 touchmove 事件事件监听器是注册在window, document或body上的时候,我们会将passive默认为true,也就是说代码是这样的...下图展示了用户触发滚动后到真正滚动期间,耗时最长的前百分之一案例中所耗费的时间。这些数据是由安卓上的 Chrome 访问任意网页后采集的。...但是如果 BUG 真的出现了,最常见问题是当你希望页面发生滚动时却发生了。...极个别的例子是,开发者发现(如果不在touchend事件处理函数中调用preventDefault()) click 事件触发了。

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

双击事件(dblclick)时,触发鼠标按下(mousedown) 动作事件

因此,触发顺序是,mousedown首先触发,mouseup接着触发,click最后触发。 dblclick事件则会在mousedown、mouseup、click之后触发。...两者的区别是,mouseenter事件触发一次,而只要鼠标在节点内部移动,mouseover事件会在子节点上触发多次。...在单击的时候(也就是鼠标按下的时候)不会执行双击,但是双击的时候会执行两次单击再执行双击事件。 解决的思路:要想双击时执行单击事件,就使用定时器清除掉两个单击事件,留下一个双击事件。...要想执行第一次的任务队列,那么定时器时间间隔就必须大于两次单击的时间间隔了。这样才能清除第一次的单击事件,所以,这个200是酌情值,大于间隔就行。...第一次单击任务执行了,是被定时器延时,然后第二次点击的时候给清除了。那么第二次点击事件呢? 在两次单击之后,会立马执行一个双击事件,双击事件的一开头就把这个第二次点击事件给清除了。

44420

jQuery scroll()方法:页面滚动到一定位置触发事件返回顶部

说在前面: 在日常工作中难免会遇到一些滚动事件的应用,页面滚动到一定位置显示 返回顶部 按钮,header 头部 fixed 固定等,这时候就可以使用 scroll() 方法来实现我们的需求。...定义和用法 当用户滚动指定的元素时,会发生 scroll 事件。该事件适用于所有可滚动的元素和 window 对象(浏览器窗口)。...scroll() 方法触发 scroll 事件,或规定当发生 scroll 事件时运行的函数。...语法: $(selector).scroll() 应用: 我们监听滚动事件,放滚动到 400px 时,出发显示返回顶部标签,然后给该标签,绑定一个事件,点击返回顶部。...).scroll(function() {             var scroHei = $(window).scrollTop();//滚动的高度             if (scroHei

6K30

Angular 中的伪事件

Angular 伪事件将解决上面的担忧。通过伪事件,Angular 允许你直接绑定指定按键或者按键组合。这意味着,键盘事件只会通过特定键或者组合键上触发,而不是所有键盘事件上都触发。...在 @HostListener 中使用 Pseudo-Events 如同其他 DOM 事件,你可以通过 @HostListener 监听伪事件: @HostListener('keydown.control.z...,比如: @HostListener('document:keydown.control.z') undo(event: KeyboardEvent) { // responds to control...如果你想查键盘事件属性值完整的列表,请移步参考。现在,让我们来查看一下可用于 Angular 伪事件的键值。...译者加:某些伪事件在平台上绑定有一定差异,比如在 mac 上绑定 document:keydown.control.arrowright 生效,在 window 上则生效

22540

AngularJS2+调用原有的js脚本(AngularJS脚本跟本地原有脚本之间的关系)

使用这种方法,类似上一篇文章的问题,你也完全可以声明一个window对象,然后直接访问其中的userAgent: ... declare var window:any; ......当然你可能会说,,我就是在浏览器运行,不考虑别的。OK,我也较劲,你当我没说,你完全可以就这么用。...HostListener 是属性装饰器,用来为宿主元素添加事件监听,这个行为表示html端某个元素的事件,产生到达TS脚本的调用动作。...this.isPressed = false; } } 上面的代码表示,如果某个html元素用exeButtonPress属性修饰之后,会有一个.pressed属性,可以监控到鼠标按下、抬起的事件...HostListener和HostBinding有一个简写的形式host,如下所示: import { Directive, HostListener } from '@angular/core';

1.5K60

Angular2 之 属性型指令Angular指令可分为三种创建一个属性型指令 -- 初级应用响应用户引发的事件 -- 高级应用

绑定宿主元素的事件事件绑定的时候捕捉到这个事件源$event(table指令,这是属性型指令的重点)。 Angular指令可分为三种 组件 属性型指令 结构型指令 今天来学习一下属性型指令。...实现 把@HostListener装饰应用到事件触发时需调用的方法。.../** * 参数1:DOM事件的名字 * 参数2:注入的事件,常用的是$event */ @HostListener('click', ['$event']) onclick(event: MouseEvent...) {} @HostListener('mouseenter') onMouseEnter() { /* . . . */ } @HostListener('mouseleave') onMouseLeave...() { /* . . . */ } @HostListener装饰器引用属性型指令的宿主元素,在这个例子中就是。

1.4K30

前端性能优化之防抖与节流,大幅度降低你的事件处理性能

= document.getElementsByClassName('nav-bar')[0] //给window绑定滚动事件 window.onscroll = function...我们可以看到, scroll事件是一个频发事件,我们只是简单的往下滚动, 但scroll 事件触发了很多很多很多次。...因为滚动事件是频繁触发的,紧接着又触发了 scroll 事件。...就这样在后面会触发无数次的滚动事件, 代码的运行会一直按照步骤2里的逻辑进行,这样循环往复…… 直到我们停止滚动以后, 不再触发滚动事件了,最后一次滚动事件中给 timer赋值的 setTimeout...因滚动事件频繁触发, 再一次触发滚动事件,获取一下现在的时间戳,判断一下,现在的时间戳减去上一次操作结束时的时间戳,发现时间相差小于1秒,所以获取导航栏离文档顶部的距离,同时也不用给 last 重新赋值一个此时的时间戳

1.5K20

dotnet 读 WPF 源代码笔记 为什么设置了SplashScreen会让Application.Current.Activated事件触发

在 WPF 应用中,可以非常方便将一张图片设置为 SplashScreen 启动界面欢迎图,但是如果有设置了启动界面欢迎界面,那么 Application.Current.Activated 事件就不会被触发...在 SplashScreen 显示完成之后,再创建 App 出来,也就是说监听 Activated 事件是在启动图之后 那么 Activated 事件是由谁分发的?...return false; } 也就是说调用进入 WmActivateApp 的参数将决定是否调用 OnActivated 函数,在 OnActivated 函数里面就是事件触发...IntPtr.Zero, wrapperHooks); } } 也就是说 Activated 事件触发就是依靠...的速度足够快,因此在 Application 的 EnsureHwndSource 函数调用之前,系统发送了 WM_ACTIVATEAPP 消息给到应用了 所以在 App 的构造函数监听 Activated 事件将不会收到触发

96540

使用 requestAnimationFrame 解决滚动点停误触和 scroll 事件延迟

背景 在手机端网页开发过程中,我们经常会遇到滚动点停误触的问题,最开始想到的解决办法就是判断当前页面(DOM)是否在滚动,如果在滚动,就取消点击或者其他事件。...比如在 iOS UIWebViews 中, 在视图的滚动过程中,scroll 事件不会被触发;在滚动结束后,scroll 才会触发,参见 Bootstrap issue #16202 。...不能正确获取 scroll 事件就无法正确判断当前页面是否正在滚动。看起来我们陷入了僵局。 新的解决方案 我们放弃 scroll 事件,使用别的方式判断页面是否滚动。...最先想到的就是通过获取某个元素的相对位置,如果在两帧之内位置没有发生变化,那不就证明了当前页面已经滚动了吗。...如何判断元素位置没有发生改变 我们首先给 window 上绑定 touch 事件window.addEventListener('touchmove', this.onWindowTouchMove.bind

87020

webapi(五)- 事件对象

e) { // e就是事件对象 // 关于事件对象,如果需要使用,就写上形参e,不需要使用,可以忽略写 console.log(e) }) 事件对象常用属性...当页面进行滚动触发事件 事件名: scroll 给 window 或 document 添加 scroll 事件 例如:监听整个页面滚动 window.addEventListener('scroll...DOMContentLoaded' , function() { }) 元素大小和位置 scroll 家族 scrollWidth 和scrollHeight 获取元素内容的总宽高(包含滚动条...可以修改 获取页面的滚动卷曲距离 document.documentElement.scrollTop window.addEventListener('scroll' , function() {...,滚动条等) clientLeft和clientTop (只读) 获取左边框和上边框宽度 resize 事件 会在窗口尺寸改变的时候触发事件 // resize事件 : 当浏览器大小发生改变的时候会触发事件

1K20

前端day15-JS(WebApi)学习笔记(三大家族、事件对象、getComputedStyle)

onscroll:元素的滚动事件,只要滚动就会触发 3.png 获取网页滚动距离 1.如何获取页面的HTML元素和body元素 HTML:document.documentElement; body...: document.body; 2.获取整个页面的滚动事件window.onscroll 没有兼容性 3.获取页面的scrollTop和scrollLeft:存在浏览器兼容性 谷歌/火狐 : window.pageXOffset...) 1.什么是事件对象event:当某一个事件触发时(例如点击事件),此时浏览器会记录触发时的某些信息, 例如你是在哪个位置点击的,你在点击的时候是直接鼠标左键点击的,还是鼠标左右键一起点击(骚操作)...e = e || window.event; console.log ( e ); } 3.1-事件对象三大坐标系 1.电脑屏幕的左上角,距离你触发事件的那一点的...); box.onclick = function (e) { e = e || window.event; //1.电脑屏幕的左上角,距离你触发事件的那一点的x

64400

接上一篇事件详解

,在垂直方向上滚动页面时(无论向上还是向下),就会触发mousewheel事件,这个事件可以在任何元素上触发,最终会冒泡到document(IE8)或window(IE9,Opera,Chrome,Safari...,也是在鼠标滚轮滚动触发,与mousewheel事件一样,但是他的有关鼠标滚轮信息保存在detail属性中,当鼠标向前滚动时,这个属性值是-3的倍数,当鼠标滚轮向后滚动时,这个属性值是3的倍数;也可以给...wheelDelta属性,如果包含则返回属性值,如果包含,那么我们就当作是firefox浏览器,那么假设相应的值保存在detail属性中,有了上面的方法后,我们现在可以将相同的事件指定给mousewheel...120,向下滚动是负数-120,所以根据是否大于0,可以判断是向下滚动还是向上滚动; HTML5事件 1....touchmove:当手指在屏幕上滑动时连续地触发,这个事件发生期间,我们可以使用preventDefault()事件可以阻止滚动。 touchend: 当手指从屏幕上移开时触发

1.8K60

【Flink】 WaterMark 详解

虽然大部分情况下,流到 operator 的数据都是按照事件产生的时间顺序来的,但是也排除由于网络、背压等原因,导致乱序的产生(out-of-order 或者说 late element)。...「窗口分类」 窗口分类可以分成:滚动窗口(Tumbling Window,无重叠),滑动窗口(Sliding Window,有重叠),和会话窗口,(Session Window,活动间隙) 滚动窗口 滚动窗口分配器将每个元素分配给固定窗口大小的窗口...类似于滚动窗口分配器,窗口的大小由窗口大小参数配置。另外一个窗口滑动参数控制滑动窗口的启动频率(how frequently a sliding window is started)。...例如,活动的间隙时。会话窗口分配器配置会话间隙,定义所需的活动时间长度(defines how long is the required period of inactivity)。...watermark 是用于处理乱序事件或延迟数据的,这通常用 watermark 机制结合 window 来实现(Watermarks 用来触发 window 窗口计算)。

1K10
领券