JavaScript与Vue中禁用鼠标右键菜单的实现方法
本文介绍了在JavaScript和Vue项目中禁用鼠标右键菜单的方法。通过oncontextmenu事件和addEventListener监听contextmenu事件,结合preventDefault()阻止默认行为。在Vue中,利用@contextmenu指令实现自定义右键菜单功能,并处理显示、定位及隐藏逻辑。
在实际开发中,偶尔会遇到特殊需求,例如需要处理用户的鼠标右键点击操作。
1、oncontextmenu 事件
该事件在用户于元素内右键点击鼠标时触发,通常用于打开浏览器的上下文菜单。
HTML 属性写法如下:
<element oncontextmenu="myScript">JavaScript 中,可以通过对象属性赋值的方式绑定事件。
object.oncontextmenu=function(){
myScript
};推荐使用 addEventListener() 方法添加监听器。
object.addEventListener("contextmenu", myScript);需要注意的是,Internet Explorer 8 及更早版本的浏览器不支持 addEventListener() 方法。
2、JS实例
通过监听 oncontextmenu 或 contextmenu 事件,并阻止默认行为,可以实现禁用右键菜单的效果。
document.addEventListener("oncontextmenu",function(evt){
console.log("右键单击,自定义右键菜单")
evt.preventDefault()
})所有主流浏览器均支持 oncontextmenu 事件,但 contextmenu 事件仅在 Firefox 浏览器中作为元素属性被支持。

3、Vue实例
在 Vue.js 框架中,可以使用 contextmenu 指令来监听上下文菜单事件。当用户右键点击指定元素时,该指令会触发相应的处理逻辑。以下是一个具体的实现示例:
HTML 结构部分:
<div @contextmenu="showContextMenu" class="right-clickable">
Right-click me
<div v-if="contextMenuVisible" class="context-menu">
<!-- 右键菜单的内容 -->
<ul>
<li @click="menuItemClicked('Option 1')">Option 1</li>
<li @click="menuItemClicked('Option 2')">Option 2</li>
<li @click="menuItemClicked('Option 3')">Option 3</li>
</ul>
</div>
</div>JavaScript 逻辑部分:
export default {
data() {
return {
contextMenuVisible: false,
contextMenuPosition: { x: 0, y: 0 }
};
},
methods: {
showContextMenu(event) {
// 阻止默认右键菜单
event.preventDefault();
// 获取右键点击的位置
this.contextMenuPosition.x = event.clientX;
this.contextMenuPosition.y = event.clientY;
// 显示右键菜单
this.contextMenuVisible = true;
},
hideContextMenu() {
// 隐藏右键菜单
this.contextMenuVisible = false;
},
menuItemClicked(option) {
// 处理菜单选项点击事件
console.log('Clicked:', option);
this.hideContextMenu();
}
},
mounted() {
// 监听点击页面其他部分,以隐藏右键菜单
window.addEventListener('click', this.hideContextMenu);
},
beforeDestroy() {
// 移除监听器,以防止内存泄漏
window.removeEventListener('click', this.hideContextMenu);
}
};CSS 样式部分:
.right-clickable {
position: relative;
}
.context-menu {
position: absolute;
background-color: #fff;
border: 1px solid #ccc;
padding: 5px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
z-index: 1000;
}
.context-menu ul {
list-style: none;
padding: 0;
margin: 0;
}
.context-menu li {
padding: 5px 10px;
cursor: pointer;
}上述示例展示了如何利用 contextmenu 指令实现自定义右键菜单。当用户右键点击包含“Right-click me”文本的元素时,会显示一个自定义菜单。该菜单会在用户点击页面其他区域或选择菜单项后自动隐藏。
运行效果如下图所示:

总结
至此,关于在 JavaScript 和 Vue 中禁止鼠标右键点击事件的教程介绍完毕。如需了解更多相关内容,建议查阅本站过往文章或继续浏览后续文章。感谢大家的支持!
electron-builder打包与发布Electron应用
2026-11-01 05:18:32
Vue结合el-table实现表格行拖拽排序(基于sortablejs)
2026-11-01 01:30:37
详解如何在Vue中进行表单自定义验证
2026-11-01 01:17:28
UniApp 项目中 vue.config.js 配置指南
2026-11-01 00:21:50
uni-app全局变量的四种实现方式总结
2026-11-01 00:15:49








