首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaScript中禁用右键单击上下文菜单

如何在JavaScript中禁用右键单击上下文菜单
EN

Stack Overflow用户
提问于 2008-12-19 18:33:56
回答 5查看 247K关注 0票数 153

这并不是说我想阻止“查看源代码”之类的傻事,而是我正在为某些元素制作一些自定义的上下文菜单。

编辑:回复答案:我已经尝试过了:

代码语言:javascript
复制
<a id="moo" href=''> </a>

<script type="text/javascript">
    var moo = document.getElementById('moo');

    function handler(event) {
        event = event || window.event;

        if (event.stopPropagation)
            event.stopPropagation();

        event.cancelBubble = true;
        return false;
    }

    moo.innerHTML = 'right-click here';

    moo.onclick = handler;
    moo.onmousedown = handler;
    moo.onmouseup = handler;
</script>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-12-19 18:48:34

捕获onContextMenu事件,并在事件处理程序中返回false。

在某些浏览器中,您还可以使用event.button捕获单击事件并检查是哪个鼠标按键触发了该事件。

票数 121
EN

Stack Overflow用户

发布于 2013-06-07 23:19:51

如果您不关心在用户每次尝试右键单击时都用一条消息提醒用户,那么可以尝试将以下内容添加到您的body标签中

代码语言:javascript
复制
<body oncontextmenu="return false;">

这将阻止所有对上下文菜单的访问(不仅通过鼠标右键,还可以通过键盘)

然而,添加一个右键单击禁用器确实没有意义。具有基本浏览器知识的任何人都可以查看源代码并提取所需的信息。

票数 144
EN

Stack Overflow用户

发布于 2013-08-17 22:02:49

我已经使用了这个:

代码语言:javascript
复制
document.onkeydown = keyboardDown;
document.onkeyup = keyboardUp;
document.oncontextmenu = function(e){
 var evt = new Object({keyCode:93});
 stopEvent(e);
 keyboardUp(evt);
}
function stopEvent(event){
 if(event.preventDefault != undefined)
  event.preventDefault();
 if(event.stopPropagation != undefined)
  event.stopPropagation();
}
function keyboardDown(e){
 ...
}
function keyboardUp(e){
 ...
}

然后,我在最后两个函数中捕获了e.keyCode属性-如果是e.keyCode == 93,我知道用户释放了鼠标右键或按下/释放了上下文菜单键。

希望能有所帮助。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/381795

复制
相关文章

相似问题

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