修复播放详情页的鼠标隐藏问题

pull/930/merge
lyswhut 2022-04-01 14:28:22 +08:00
parent 3541b568c9
commit dee16f6943
1 changed files with 15 additions and 8 deletions

View File

@ -11,20 +11,26 @@ const isControl = dom => {
if (dom.getAttribute('aria-label') || dom.tagName == 'BUTTON') return true if (dom.getAttribute('aria-label') || dom.tagName == 'BUTTON') return true
return isControl(dom.parentNode) return isControl(dom.parentNode)
} }
const startTimeout = debounce(() => {
if (!isAutoHide || isMouseDown || !event) return const lockPointer = () => {
if (isControl(document.elementFromPoint(event.clientX, event.clientY))) return if (!isAutoHide || isMouseDown) return
if (event && isControl(document.elementFromPoint(event.clientX, event.clientY))) return
dom.requestPointerLock() dom.requestPointerLock()
isLockedPointer = true isLockedPointer = true
}, 3000) }
const unLockPointer = () => {
if (!isLockedPointer) return
document.exitPointerLock()
isLockedPointer = false
}
const startTimeout = debounce(lockPointer, 3000)
const handleMouseMove = (_event) => { const handleMouseMove = (_event) => {
event = _event event = _event
startTimeout() startTimeout()
if (!isLockedPointer) return unLockPointer()
document.exitPointerLock()
isLockedPointer = false
} }
const handleMouseDown = () => { const handleMouseDown = () => {
@ -36,13 +42,13 @@ const handleMouseUp = () => {
} }
export const registerAutoHideMounse = _dom => { export const registerAutoHideMounse = _dom => {
startTimeout()
if (isAutoHide || !_dom) return if (isAutoHide || !_dom) return
isAutoHide = true isAutoHide = true
_dom.addEventListener('mousemove', handleMouseMove) _dom.addEventListener('mousemove', handleMouseMove)
_dom.addEventListener('mousedown', handleMouseDown) _dom.addEventListener('mousedown', handleMouseDown)
_dom.addEventListener('mouseup', handleMouseUp) _dom.addEventListener('mouseup', handleMouseUp)
dom = _dom dom = _dom
startTimeout()
} }
export const unregisterAutoHideMounse = dom => { export const unregisterAutoHideMounse = dom => {
@ -52,4 +58,5 @@ export const unregisterAutoHideMounse = dom => {
dom?.removeEventListener('mousemove', handleMouseMove) dom?.removeEventListener('mousemove', handleMouseMove)
dom?.removeEventListener('mousedown', handleMouseDown) dom?.removeEventListener('mousedown', handleMouseDown)
dom?.removeEventListener('mouseup', handleMouseUp) dom?.removeEventListener('mouseup', handleMouseUp)
unLockPointer()
} }