桌面端运行JS获取navigator.maxTouchPoints返回256问题求助
问题描述
我实在不知道该怎么处理了。
如果我运行如下JS代码:
console.log(navigator.maxTouchPoints);
在我的桌面设备上得到的返回值为256
- 我在Chrome和FireFox两款最新版本浏览器中均做了测试。
- 我重置了Chrome浏览器。
- 我新建了VSCode项目运行相同代码测试。
所有操作都没有解决问题,有人知道我的电脑存在什么问题吗?
(附FireFox运行代码的截图)
解答
你遇到的navigator.maxTouchPoints桌面端返回256的情况不是电脑故障,也和浏览器、代码无关,是Windows系统层面的配置导致的:
这个JS属性本身是浏览器直接读取系统上报的最大同时触控点数返回,Windows下如果存在虚拟触控类组件,就会默认上报256这个值,常见的触发场景有这几种:
- 安装了数位板、手写板驱动,不少这类驱动会默认加载虚拟触控组件来实现手势快捷操作
- 开启了Windows的平板兼容模式,哪怕设备本身没有物理触控屏也会触发该返回值
- 远程桌面、投屏类软件安装过虚拟触控驱动,退出后没有自动还原系统配置
- 部分笔记本默认预装了触控相关驱动,即使实际没有搭载触控屏也会保留该配置
你可以按下面的步骤排查解决:
- 打开设备管理器,找到「人体学输入设备」分类,查看是否存在
HID-compliant touch screen类的触控设备条目,如果有且你确认设备没有物理触控屏,可以右键禁用该设备后重新测试 - 进入Windows设置>系统>平板,关闭所有平板模式相关的自动切换选项
- 排查近期安装的手写板、远程桌面类软件,关闭对应触控模拟功能即可
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

