Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome 禁用Chrome pinch zoom以在kiosk中使用_Google Chrome_Zooming_Kiosk_Pinch - Fatal编程技术网

Google chrome 禁用Chrome pinch zoom以在kiosk中使用

Google chrome 禁用Chrome pinch zoom以在kiosk中使用,google-chrome,zooming,kiosk,pinch,Google Chrome,Zooming,Kiosk,Pinch,我们在kiosk模式下使用Chrome,用户不小心导致应用程序通过最近添加的pinch zoom支持进行缩放。 然后,他们认为自己已经破坏了它,干脆走开,让应用程序(以及随后的55英寸触摸屏)处于破坏状态 现在唯一有效的方法是停止超过2点的触摸事件的事件传播。问题是,在这种情况下,我们不能使用多点触摸应用程序,如果你动作快,浏览器会在javascript之前做出反应。在我们的测试中,这仍然是用户偶然发生的 我已经做了元标记,它们不起作用。老实说,我希望我可以禁用chrome缩放,但我找不到一种方

我们在kiosk模式下使用Chrome,用户不小心导致应用程序通过最近添加的pinch zoom支持进行缩放。 然后,他们认为自己已经破坏了它,干脆走开,让应用程序(以及随后的55英寸触摸屏)处于破坏状态

现在唯一有效的方法是停止超过2点的触摸事件的事件传播。问题是,在这种情况下,我们不能使用多点触摸应用程序,如果你动作快,浏览器会在javascript之前做出反应。在我们的测试中,这仍然是用户偶然发生的

我已经做了元标记,它们不起作用。老实说,我希望我可以禁用chrome缩放,但我找不到一种方法来做到这一点


如何阻止浏览器缩放?

我们遇到了类似的问题,它表现为浏览器缩放,但javascript没有接收到触摸事件(有时在缩放开始前只有一个点)

我们发现了这些可能(但可能不是长期)的解决方案:

1.在使用kiosk模式时禁用按压/滑动功能

如果这些命令行设置保留在Chrome中,则可以执行以下操作:

chrome.exe --kiosk --incognito --disable-pinch --overscroll-history-navigation=0
  • --禁用收缩-禁用收缩缩放功能
  • --浏览历史记录导航=0-禁用滑动浏览功能
2.使用Chrome标志禁用收缩缩放chrome://flags/#enable-捏

导航到URLchrome://flags/#enable-收缩浏览器并禁用该功能

“收缩缩放”功能目前处于试验阶段,但默认打开,这可能意味着它将在未来版本中强制启用。如果您处于kiosk模式(并控制硬件/软件),则可能在安装时切换此设置,然后阻止Chrome更新

已存在用于在中删除此设置的路线图通知单

浏览器在javascript能够阻止之前做出反应这一事实肯定是一个bug,并且已经被记录在日志中。希望在永久启用该功能或祈祷他们将其作为一个设置之前能够修复

3.禁用与应用程序匹配的元素和事件的所有触摸、白名单

在我们进行的所有测试中,将preventDefault()添加到文档中会停止Chrome中的缩放(以及所有其他滑动/触摸事件):

document.addEventListener('touchstart', function(event){
    event.preventDefault();
}, {passive: false});
如果将基于触摸的功能附加到DOM的更高层,它将在冒泡到文档的preventDefault()调用之前激活。在Chrome中,包含eventListenerOptions参数也很重要,因为从Chrome 51 a开始


这将禁用正常的浏览器功能,如滑动滚动,但您可能必须自己实现这些功能。如果是全屏、不可滚动的kiosk应用程序,这些功能可能并不重要。

因此,任何人在浏览此页面时都会意识到Chrome中禁用“收缩到缩放”的标志现在是:

谷歌Chrome/Chrome/Canary版本50以上:

chrome://flags/#touch-事件

谷歌Chrome/Chrome/Canary版本少于50或旧版本:


chrome://flags/#enable-挤压

自51.0.2704.84 m版起,chrome://flags/#touch-events禁用所有触摸事件,不仅仅是按压功能。仅供参考。希望谷歌在未来的版本中会返回此功能。

我正在处理相同的问题。我认为我可以用遵循方法

  • 确定html元素的css像素宽度:
    document.documentElement.clientWidth
  • 将此测量值与kiosk屏幕的已知像素宽度进行比较
  • 如果html元素的宽度(以css像素为单位)比屏幕的宽度(以物理像素为单位)更大,则意味着它是按比例缩放的
  • 如果html元素已缩放,请对body元素应用缩放以进行补偿。公式为`body.style.zoom=htmlElementClientWidth/screenPhysicalPixelWidth
这种技术有一个有益的副作用,即自动将UI缩放到当前窗口的任何大小,如果我在比目标屏幕小的屏幕上开发,这对开发很有帮助


更多关于屏幕像素与css像素的对比,以及关于html元素如何扩展以填充可用空间的讨论。

目前在Chrome(54)中工作的另一个解决方案是为
'touchstart'
事件添加事件侦听器,并调用
preventDefault()
基于事件上的
目标触摸
触摸
的长度

这个解决方案可以防止挤压(任何两个手指的手势),但仍然可以灵活地响应事件。这是一个很好的解决方案,因为它不需要您完全禁用触摸事件(如果您想使用chrome标志禁用夹点,则根据需要,因为
chrome://flags/#enable-夹点
不再存在)

window.addEventListener('touchstart',函数(e){
如果(e.targetTouches.length==2){
e、 预防默认值();
}
},false);
一些无法在Chrome上压缩缩放的文本(在54中测试)
这将禁用浏览器对所有平移和缩放手势的处理。该手势仍可由javascript代码处理


感谢您指出该标志。他们初始化了该标志,但没有设置标志来禁用。有一段时间,这是一个严重的问题。我们可以访问硬件,因此启动命令行或仅使用标志对我们非常有效。第一个解决方案(chrome标志)对我来说非常有吸引力,非常感谢。广告3)默认情况下,事件监听器设置为被动,因为Chrome 56(而非51),因为Chrome 80
overscroll history navigation=0
不起作用#触摸事件:禁用全触摸屏,而不仅仅是收缩缩放
html {
  touch-action:none;
}