鼠标滚轮测试
把指针放在下面的区域里,然后滚动滚轮。页面会实时显示滚动方向、累计格数与每一格的方向,并在你持续朝一个方向滚动却出现反向时把它标出来——那是滚轮编码器开始跳格时最典型的样子。
最近 80 格的方向
向下滚是沉到底部,向上滚是顶到顶部。红色的是反向毛刺——你一直在朝一个方向滚,它却单独跳了一下。
怎么看结果
- 疑似跳格是这里唯一指向故障的数字。它的定义很窄:一个孤立的反向事件,前后都是同一个方向。用户在持续滚动时不会产生这种序列,所以它一旦出现就值得怀疑。但它不是铁证——手指打滑、触控板误触、系统在做平滑插值都能造出同样的波形。所以正确用法是:只朝一个方向匀速滚二十几格,如果反复冒红,那才是编码器的问题。
- 方向反转次数本身不是故障指标,所以没放在上面的面板里。你自己每换一次方向它就会加一,滚上滚下几趟就能累积出一堆,拿它判断故障只会吓到自己。
- 一格原始值告诉你系统报出来的 deltaY 是多少。对上一眼:Windows 上 Chrome 通常是 100(像素模式),Firefox 通常报 3(行模式)。如果你的数完全不是这两个样子,说明系统或驱动改过滚动设置,这时格子数的换算就只是粗略参考了。
浏览器给的到底是什么
滚轮事件携带的是 deltaY 加一个 deltaMode,后者只说明单位是像素、行还是页,但它不说“一行多高”“一格多少像素”。所以任何把 deltaY 换算成“格数”的做法都带一个假设。本页用的假设写在下面这张表里,你可以对照自己的实际情况:
| deltaMode | 名称 | 含义 | 本页按几算一格 |
|---|---|---|---|
| 0 | DOM_DELTA_PIXEL | 按像素计 | 100 |
| 1 | DOM_DELTA_LINE | 按行计 | 3 |
| 2 | DOM_DELTA_PAGE | 按页计 | 1 |
也正因为换算是估算,本页把方向当作主指标。方向不需要任何换算——直接读 deltaY 的符号就行,不受系统设置影响,跨浏览器也一致。
常见问题
不准,它是个估算。浏览器只告诉你 deltaY 的数值和单位(像素/行/页),没告诉你“一格是多少”——系统里“一次滚动多少行”的设置、驱动的平滑滚动、以及鼠标是不是无极滚轮,都会改变这个数。本页按常见约定换算(像素模式 100 一格、行模式 3 行一格),所以真正可信的是方向和方向反转,那两个不需要任何换算。
最典型的表现是“反向毛刺”:你一直朝一个方向滚,中间突然跳一下反方向,而且前后都是正常的。本页会把这种波形单独数出来,就是下面那个“疑似跳格”。要注意它只是怀疑对象——手指打滑、触控板误触也能造出同样的波形,所以判读方法是:只朝一个方向匀速滚二十几格,看有没有出现毛刺。
这是故意的。如果让页面跟着滚,测试区会从指针底下溜走,越滚越测不到。所以本页把滚动事件拦了下来,只统计不滚动。想恢复正常浏览,把指针移出这个区域就行。
无极滚轮(可以一直转、带惯性自由滑行的那种)一次滑动会发出几十上百个连续的小 delta,所以条带会刷得飞快、累计格数也会大得离谱——那是它的正常工作方式,不是故障。判断这类鼠标要看方向是否连贯,而不是格数。
