Leaflet: L.Browser.touch 在桌面 (Chrome) 上设置不正确

创建于 2017-01-18  ·  3评论  ·  资料来源: Leaflet/Leaflet

似乎最近对 Chrome 的更新(至少在 Mac 上)已经改变了window.PointerEvent的实现。 这会导致当前版本的 Leaflet (1.0.2) 将浏览器误诊为触摸设备,并添加了leaflet-touch类。

这条线似乎是罪魁祸首:

pointer = window.PointerEvent || msPointer

...可以在这里找到: https ://github.com/Leaflet/Leaflet/blob/v1.0.2/src/core/Browser.js#L33

问题是window.PointerEvent是一个函数,它总是会返回“truthy”。

如何重现

  • 浏览器:Mac OSX El Capitan (10.11.6),Chrome 版本 55.0.2883.95(64 位)
  • 转到www.leafletjs.com并查看演示示例...放大/缩小按钮被放大,因为leaflet-touch类被应用于传单地图容器。

最有用的评论

那么,如果不能准确地检测到触摸,那么检测触摸有什么意义呢? 那么,不应该从传单中删除整个逻辑吗?

所有3条评论

我也可以重现这个...

https://github.com/Leaflet/Leaflet/issues/3944 的副本。 无法知道浏览器是否在带有触摸屏的计算机上运行,​​只能知道浏览器是否支持触摸/指针事件。 另见http://www.stucox.com/blog/you-cant-detect-a-touchscreen/

那么,如果不能准确地检测到触摸,那么检测触摸有什么意义呢? 那么,不应该从传单中删除整个逻辑吗?

此页面是否有帮助?
0 / 5 - 0 等级