我有一个Web应用程序,该应用程序具有一些交互功能,需要用户长按/按住屏幕才能进行操作,这一切都很好,但是在中国的微信上以及类似的浏览器/网络视图(如腾讯(X5),按住屏幕时会出现一个上下文菜单。
我尝试了以下代码(以及事件中的所有变体):
// Long press, then the following code executes
document.addEventListener('contextmenu', (e) => {
alert('Right click');
e.preventDefault();
e.stopPropagation();
return false;
});
// As soon as the alert is dismissed, the context menu still appears
该警报会在该应用的上下文菜单之前立即弹出,但我仍然无法阻止它的发生。
这里的任何帮助将不胜感激。我知道中国的Android微信拥有本机Javascript桥,并且可以使用自定义属性等禁用其他怪癖,但我只是无法解决此问题。
可以使用https://play.google.com/store/apps/details?id=com.tencent.mtt(在中国境外的作品)轻松进行测试。
谢谢
答案 0 :(得分:2)
这对我有用:
element.addEventListener('touchstart', (e) => {
e.stopPropagation();
e.preventDefault();
// Trigger desired event here
});
取消touchstart事件似乎使浏览器认为不再按下指针,而不是尝试根据长按事件取消任何操作。您可以将其替换为主体,以防止它发生在所有事情上,但是,建议您不要这样做(UX +其他副作用)。