首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨浏览器区分右击和上下文菜单键

跨浏览器区分右击和上下文菜单键
EN

Stack Overflow用户
提问于 2018-11-20 17:00:06
回答 1查看 110关注 0票数 0

寻找一种跨浏览器方式来区分Windows机器上的右键单击和上下文菜单键。到目前为止,我的情况是这样的,但这并不完美:

代码语言:javascript
复制
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事件。

EN

回答 1

Stack Overflow用户

发布于 2018-11-20 18:11:01

尝试使用按钮代码,pointerId (to Edge,检测鼠标是否在事件中被触发),下面是测试的代码

代码语言:javascript
复制
//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;
        }
    }  
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53397944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档