在特定元素上禁用移动长按上下文菜单

8
我有一个包含各种控件的图库。其中一个控件是基本的删除功能,若要删除,则需点击并按住大约1秒钟以获得确认询问是否要删除。一切都正常,只是在移动设备上,它经常会导致“保存图像为等”菜单弹出,必须关闭该菜单才能执行预期操作。
我已阅读了各种解决方法,但似乎都不能与我Galaxy S5上当前版本的Chrome移动版配合使用,而且我能找到的最新答案是来自2013年。
我找到了一个说上下文菜单是其自己的功能的答案,因此我尝试了这样的方法:
    window.oncontextmenu = function(event) {
        event.preventDefault();
        event.stopPropagation();
        return false;
    };

但这并没有阻止我的S5显示上下文菜单。正如我所说,我希望找到一个解决方案,以防止它在某些项目上出现,而不是整个窗口。

感谢Tasos提供的答案

document.getElementById('yourElement').oncontextmenu = function(event) {
    event.preventDefault();
    event.stopPropagation(); // not necessary in my case, could leave in case stopImmediateProp isn't available? 
    event.stopImmediatePropagation();
    return false;
};

你有添加这个CSS -webkit-user-select: none; 来禁用长按文本选择吗?我觉得你没有遇到这个问题。 - rajesh
1
还有(event.stopImmediatePropagation());--尝试将其放在(event.stopPropagation());下面--否则在这里查看https://dev59.com/xGct5IYBdhLWcg3wKqQd - Tasos
2
CSS属性也不起作用。Tasos,请发布您的stopImmediateProp解决方案,因为它有效,我想给您信用。我也会更新原始问题。谢谢! - SISYN
1个回答

5

我将答案转发到这里,因为一开始我没有看到它在问题中 :)

所以只需使用此代码,并使用stopImmediatePropagation:

document.getElementById('yourElement').oncontextmenu = function(event) {
    event.preventDefault();
    event.stopPropagation(); // not necessary in my case, could leave in case stopImmediateProp isn't available? 
    event.stopImmediatePropagation();
    return false;
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接