Chrome 和 Firefox Android 中长按的奇怪行为
Weird behavior of long presses in Chrome and Firefox for Android
因此,我在 Chrome 和 Firefox Android 中发现了一些奇怪的长按行为。我试图避免滚动、上下文菜单、振动和选择文本。另外,我需要触摸不被取消。我设置了这样一个简单的页面:
var logger = document.getElementById("logger")
function touchHandler(e) {
e.preventDefault()
logger.innerText += e.type + "\n"
}
function contextMenuHandler(e) {
e.preventDefault()
logger.innerText += e.type + "\n"
}
window.addEventListener("touchstart", touchHandler)
window.addEventListener("touchmove", touchHandler)
window.addEventListener("touchend", touchHandler)
window.addEventListener("touchcancel", touchHandler)
window.addEventListener("contextmenu", contextMenuHandler)
<pre id="logger"></pre>
我得到了这些结果,在不移动手指的情况下按下一点:
- 当我默认阻止触摸事件和
contextmenu
事件时:
- Chrome 日志:
touchstart
contextmenu
touchend
请注意 Chrome 在 contextmenu
被触发的同时振动。
- Firefox 日志:
touchstart
contextmenu
touchcancel
Firefox 在 contextmenu
触发后立即取消触摸事件,这对我来说是个问题。
- 当我默认只阻止触摸事件时:
- Chrome 日志:
touchstart
contextmenu
touchend
好的。它不振动。
- Firefox 记录同样的事情。
这一次,它没有取消触摸,而是选择了一些文本。
-
当我默认只阻止 contextmenu
事件时:
- Chrome 日志:
touchstart
contextmenu
touchend
但是,它会振动和滚动。
- Firefox 日志:
touchstart
contextmenu
touchcancel
同样,它取消了触摸,但没有选择任何文本。
- 最后,当没有事件被默认阻止时:
- Chrome 日志:
touchstart
contextmenu
touchend
并且仍然振动和滚动。
- Firefox 日志:
touchstart
contextmenu
touchcancel
一样 :(
那么,有什么方法可以防止滚动、上下文菜单、振动和选择文本,并避免 Firefox 取消触摸 ?
已在未来的 firefox 移动浏览器中修复:
https://bugzilla.mozilla.org/show_bug.cgi?id=1481923
因此,我在 Chrome 和 Firefox Android 中发现了一些奇怪的长按行为。我试图避免滚动、上下文菜单、振动和选择文本。另外,我需要触摸不被取消。我设置了这样一个简单的页面:
var logger = document.getElementById("logger")
function touchHandler(e) {
e.preventDefault()
logger.innerText += e.type + "\n"
}
function contextMenuHandler(e) {
e.preventDefault()
logger.innerText += e.type + "\n"
}
window.addEventListener("touchstart", touchHandler)
window.addEventListener("touchmove", touchHandler)
window.addEventListener("touchend", touchHandler)
window.addEventListener("touchcancel", touchHandler)
window.addEventListener("contextmenu", contextMenuHandler)
<pre id="logger"></pre>
我得到了这些结果,在不移动手指的情况下按下一点:
- 当我默认阻止触摸事件和
contextmenu
事件时:- Chrome 日志:
touchstart contextmenu touchend
请注意 Chrome 在contextmenu
被触发的同时振动。 - Firefox 日志:
touchstart contextmenu touchcancel
Firefox 在contextmenu
触发后立即取消触摸事件,这对我来说是个问题。
- Chrome 日志:
- 当我默认只阻止触摸事件时:
- Chrome 日志:
touchstart contextmenu touchend
好的。它不振动。 - Firefox 记录同样的事情。 这一次,它没有取消触摸,而是选择了一些文本。
- Chrome 日志:
-
- 当我默认只阻止
- Chrome 日志:
touchstart contextmenu touchend
但是,它会振动和滚动。 - Firefox 日志:
touchstart contextmenu touchcancel
同样,它取消了触摸,但没有选择任何文本。
contextmenu
事件时: - Chrome 日志:
- 最后,当没有事件被默认阻止时:
- Chrome 日志:
touchstart contextmenu touchend
并且仍然振动和滚动。 - Firefox 日志:
touchstart contextmenu touchcancel
一样 :(
- Chrome 日志:
那么,有什么方法可以防止滚动、上下文菜单、振动和选择文本,并避免 Firefox 取消触摸 ?
已在未来的 firefox 移动浏览器中修复: https://bugzilla.mozilla.org/show_bug.cgi?id=1481923