寻找一种跨浏览器方式来区分Windows机器上的右键单击和上下文菜单键。到目前为止,我的情况是这样的,但这并不完美:
document.addEventListener('contextmenu', (event) => {
// distinguish between right-click and context menu key here
});IE,边缘:是上下文菜单键,如果是event.clientX <= 0 && event.clientY <= 0
FF,Safari:是上下文菜单键,如果是event.which === 1
Chrome:是上下文菜单键,如果是event.which === 0
这并不完美,因为从技术上讲,用户可以在窗口左上角右击,事件的位置是(0,0),我的逻辑认为它是IE、Edge和FF上的按键。我要找的是一些稍微健壮,不那么复杂的东西。它存在吗?我不想为了区分事件而管理第二个事件处理程序,如果可能的话,我宁愿使用contextmenu事件。
发布于 2018-11-20 18:11:01
尝试使用按钮代码,pointerId (to Edge,检测鼠标是否在事件中被触发),下面是测试的代码
//declaring the event
document.addEventListener('contextmenu', (event) => {
//get Edge
if(window.navigator.userAgent.indexOf("Edge") > -1){
switch(event.pointerId) {
case 0:
//this is context key!!
console.log("Context Key")
break;
case 1:
//this is right click!!
console.log("Right click")
break;
}
}else{
switch(event.button) {
case 0:
//this is context key!!
console.log("Context Key")
break;
case 2:
//this is right click!!
console.log("Right click")
break;
}
}
});https://stackoverflow.com/questions/53397944
复制相似问题