如何在Android上的腾讯/ X5 /微信浏览器中禁用上下文菜单

时间:2018-06-25 15:31:05

标签: javascript wechat

我有一个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(在中国境外的作品)轻松进行测试。

谢谢

1 个答案:

答案 0 :(得分:2)

这对我有用:

element.addEventListener('touchstart', (e) => {
    e.stopPropagation();
    e.preventDefault();

    // Trigger desired event here
});

取消touchstart事件似乎使浏览器认为不再按下指针,而不是尝试根据长按事件取消任何操作。您可以将其替换为主体,以防止它发生在所有事情上,但是,建议您不要这样做(UX +其他副作用)。