Javascript 触摸屏全屏事件不适用于Chrome

Javascript 触摸屏全屏事件不适用于Chrome,javascript,android,html,google-chrome,fullscreen,Javascript,Android,Html,Google Chrome,Fullscreen,在我的移动应用程序中,我想在用户向上滑动时切换全屏。 所以当触发touchend事件时,我调用document.documentElement.webkitRequestFullScreen() 问题是它在我的手机Chrome56+上不起作用 下面是一个例子。 有趣的是:只有在touchstart和touchend之间进行touchmove时,才会出现此问题 在控制台中,我有一个错误: 未能在“元素”上执行“requestFullscreen”:只能使用API 由用户手势启动。 documen

在我的移动应用程序中,我想在用户向上滑动时切换全屏。
所以当触发
touchend
事件时,我调用
document.documentElement.webkitRequestFullScreen()
问题是它在我的手机Chrome56+上不起作用

下面是一个例子。

有趣的是:只有在touchstart和touchend之间进行touchmove时,才会出现此问题

在控制台中,我有一个错误:

未能在“元素”上执行“requestFullscreen”:只能使用API 由用户手势启动。 document.documentElement.webkitRequestFullScreen()


有人知道如何应对吗?

你必须在touchmove上调用
preventDefault()
,然后传递到
addEventListener()
。这对我来说很有用:

addEventListener('touchmove', onTouchMove, {passive: false});

function onTouchMove(e) {
  e.preventDefault
}

这是因为当用户仅使用触摸在页面上滚动时,您无法再触发触摸全屏事件。此代码阻止滚动,因此用户的滑动被视为真正的交互。由于Chrome 56,“touchmove”事件将不再触发用户手势,因此无法用于激活全屏模式。在使用上述代码阻止默认触摸滚动行为后,现在必须从“touchend”事件调用requestFullscreen()。