使用方法
鼠标测试是「进测试区、操作鼠标、看反馈」三步:
- 把鼠标移进上方测试区(虚线框),它获得焦点后即可检测。
- 按住左/中/右键看对应行变「按下中」,点击会在「左键点击数」累加,双击单独计数。
- 在区内移动看「实时坐标」变化,滚动滚轮看「滚轮方向 / 量」;点「重置计数」清零。
鼠标测试能解决什么
它解决「鼠标某键是不是坏了」的疑问,适合三类场景:
- 新鼠标验货:买来先测左中右三键与滚轮,确认每个键都有响应再留。
- 失灵排查:某个键偶尔失灵,反复按看计数是否稳定增加,判断是硬件还是驱动问题。
- 教学演示:给新手讲鼠标按键时,实时高亮比口头描述直观。
本页不做的事:不测 DPI、回报率、回报率抖动等硬件指标(需专业工具);不记录宏或按键序列;不测触摸板手势。它只做基础按键与坐标的本地检测。
原理和变量
① 用了哪个具体函数:监听用 addEventListener 绑定 mousedown / mouseup / click / dblclick / mousemove / wheel / contextmenu,按键类型由事件对象的 button 字段(0=左、1=中、2=右)区分。
② 关键参数为什么这样取:用 button 而非键盘码,是因为鼠标事件标准就是这么定义;坐标用 offsetX/offsetY 相对于测试区,避免受页面滚动影响。
③ 遵循哪个标准:事件模型遵循 W3C DOM 标准,button 编码与主流浏览器一致,结果可直接对照系统设置。
④ 输入怎么变成输出:演示左键 mousedown,button=0 →「左键」行变「按下中」,mouseup 后回「未按下」;一次完整 click 让「左键点击数」+1。
⑤ 边界与阈值:坐标超出测试区不计数(事件绑定在区内);滚轮 deltaY 正负表示方向;连续两次 click 间隔短于系统双击阈值才计「双击」。
⑥ 常见误用的正确解释:右键会触发系统菜单,本页用 contextmenu 阻止默认菜单才能正常检测右键。另一个误区是以为在区外按键也计——事件只绑在测试区。
完整示例
演示操作序列(每次真实操作不同,下列为示意):
- 左键按下 → 左键行「按下中」,松开回「未按下」。
- 完成一次 click → 左键点击数变为 1。
- 快速连点两下 → 双击计数变为 1。
- 区内右击 → 右键行「按下中」,且系统菜单被拦下。
- 向上滚一轮 → 滚轮方向显示「上 / 100」。
这些反馈与页面状态表一一对应,可逐项核对。
输入范围与对照表
鼠标测试的按键编码与检测项对照如下:
| 检测项 | 判定依据 | 说明 |
|---|---|---|
| 左键 | button = 0 | mousedown/up 切换 |
| 中键 | button = 1 | 多数鼠标滚轮按下 |
| 右键 | button = 2 | contextmenu 拦默认菜单 |
| 点击数 | click 事件 | 仅左键主键累计 |
| 双击 | 两次 click 间隔短 | 随系统阈值 |
| 滚轮 | wheel.deltaY | 正负表方向 |
| 坐标 | offsetX/Y | 相对测试区 |
中键在部分笔记本触控板需组合手势,若无实体中键可能无响应,属正常。
结果边界和舍入
结果性质:本页是实时交互检测,不输出文件、不保存历史;刷新即清零,所有事件只在本地处理。
什么时候会没反应:鼠标在测试区外操作不计数(事件绑在区内);浏览器禁止某些自动化点击;触控板无中键时中键行恒为「未按下」。
坐标含义:显示的是相对于测试区左上角的像素坐标,移到右下角数值最大;受测试区尺寸限制,不是全屏坐标。
隐私:不发起任何网络请求,不记录你的按键序列,适合含敏感环境的本地检测。
常见问题
右键为什么没弹出菜单?
本页特意拦下右键默认菜单(contextmenu)才能正常检测右键按下;这是设计行为不是故障。
中键测不出来怎么办?
部分笔记本触控板没有实体中键,需用组合手势;若无中键硬件,中键行会一直「未按下」,属正常。
点击数为什么只算左键?
click 事件默认由主键(左键)触发,中右键不计入「左键点击数」;如需统计请用对应按键状态行。
坐标和屏幕对不上?
坐标相对测试区左上角,不是全屏坐标;移到区右下角数值最大,符合预期。
双击计数为什么偶尔不增?
双击依赖系统双击时间间隔阈值,点太慢会被算两次单击;这是系统设定不是本页问题。
能测 DPI 或回报率吗?
不能,本页只做基础按键与坐标检测;DPI、回报率需专业硬件测试工具。
我的操作会被记录吗?
不会。所有事件只在本地处理,刷新即清空,不向服务器发送任何按键信息。
手机上能用吗?
触屏没有鼠标按键,本页主要面向带鼠标的设备;触屏点按可能只触发部分事件。