chrome.exe --kiosk --incognito --disable-pinch --overscroll-history-navigation=0
2. 使用Chrome标志chrome://flags/#enable-pinch禁用捏合缩放
在浏览器中导航到URL chrome://flags/#enable-pinch,并禁用该功能。
捏合缩放功能目前处于实验阶段,但默认已开启,这可能意味着它将在未来版本中被强制启用。如果您处于展示模式(并控制硬件/软件),则可以在安装时切换此设置,然后防止Chrome更新进行。
已经有一个路线图票据Chromium Issue 304869来删除此设置。
浏览器在JavaScript之前做出反应的事实肯定是一个bug,并已在Chromium bug tracker中记录。希望在永久启用该功能之前修复它,或者他们会将其保留为设置。
3. 禁用所有触摸事件,为与您的应用程序匹配的元素和事件设置白名单
在我们进行的所有测试中,将preventDefault()添加到文档中可以停止Chrome中的缩放(以及所有其他滑动/触摸事件):
document.addEventListener('touchstart', function(event){
event.preventDefault();
}, {passive: false});
{passive: true}
。
这会禁用常规浏览器功能,例如滑动滚动条,您可能需要自己实现这些功能。如果是全屏不可滚动的展示应用程序,则这些功能可能不重要。
html {
touch-action:none;
}
https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action
大多数浏览器默认手势都是在html
元素上触发的,禁用touch-action
将禁用所有默认手势,如捏放缩、拖动导航等。提醒所有访问此页面的人,现在在Chrome中禁用“双指缩放”的标志如下:
Google Chrome / Chromium / Canary 50版以上:
chrome://flags/#touch-events
Google Chrome / Chromium / Canary 50版以下或旧版:
chrome://flags/#enable-pinch
我遇到了同样的问题。我认为我可以通过以下方法合理地处理它:
document.documentElement.clientWidth
此技术的有益副作用是自动缩放UI以适应当前窗口大小,这对于开发人员来说非常有帮助,因为他们可以在比目标屏幕小的屏幕上开发。
关于屏幕像素与CSS像素的更多信息,以及有关HTML元素如何扩展以填充可用空间的讨论,请参见quirksmode.org。
'touchstart'
调用preventDefault()
,这取决于事件上targetTouches
或touches
的长度。
该解决方案可防止捏合手势(任何两个手指的手势),但仍提供了您想要响应事件的灵活性。这是一个很好的解决方案,因为它不需要您完全禁用触摸事件(如果要使用chrome标志禁用捏合,则需要这样做,因为chrome:// flags /#enable-pinch
已经不存在)。
window.addEventListener('touchstart', function(e) {
if (e.targetTouches.length === 2) {
e.preventDefault();
}
}, false);
Some text that you can't pinch zoom on Chrome (tested in 54)
从版本51.0.2704.84 m开始,chrome://flags/#touch-events不仅禁用了捏合功能,还禁用了所有触摸事件。希望Google在未来的版本中恢复此功能。