【发布时间】:2021-10-18 19:45:20
【问题描述】:
如果您在带有触控板的笔记本电脑上的 Chrome/Firefox 中打开 Google 地图,如果您捏合缩放,它只会缩放地图,而浮动 UI 元素保持静态。所以我知道我想做的事情是可能的。
似乎浏览器不会为桌面浏览器上的触控板触摸发出touch* 事件,但它确实会发出一系列wheel 事件(event.ctrlKey 设置为true ) 用于触控板捏合缩放手势。
问题是,即使使用event.preventDefault(),浏览器仍然总是缩放整个页面。似乎在 wheel 事件上调用 preventDefault() 只会在控制台中打印此警告(Chrome 92):
[Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/6662647093133312`
(警告中的网址似乎没有任何用处。)
我尝试使用与 Google 地图 (<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">) 相同的元视口标签,但没有帮助。
那么谷歌地图是如何做到的呢?当您在触控板上进行捏合缩放时,它们如何防止默认行为(缩放整个页面)?
【问题讨论】:
标签: javascript