JavaScript 实现自定义右键上下文菜单

作者:半夏时间:2026-10-29 18:56:00浏览:406

本文介绍如何使用 JavaScript 实现自定义右键上下文菜单。核心原理是监听 contextmenu 事件,通过 preventDefault 阻止浏览器默认菜单,并根据鼠标坐标定位自定义菜单。文章提供了 HTML 结构及 JS 事件监听代码,演示如何显示和隐藏菜单。

JavaScript 自定义右键菜单实现

本文通过具体代码示例,讲解如何在 JavaScript 中实现调用上下文菜单的功能,供读者参考学习。

原理 当用户点击右键时会触发一个contextmenu事件,默认会触发浏览器的默认的上下文菜单,通过手动阻止这个默认行为,然后再显示自定义的上下文菜单,当用户单击时隐藏这个菜单即可。 代码 1、html

HTML 菜单结构


<div id="box" style="color:red;width: 100%;height:1000px;" >
 <div id="left" style="float:left;width:500px;margin-left: 50px;height:500px;background: #cdeddf;">
  
 </div> 
 <div id="right" style="float:right;width:600px;margin-right: 50px;height:500px;background: #cdeaae;">
 </div>
 <ul id="menu" style="position: absolute;visibility: hidden;list-style: none;">
  <li>按钮1</li>
  <li>按钮2</li>
  <li>按钮3</li>
 </ul>
</div>

接下来是具体的 JavaScript 实现逻辑。

JavaScript 事件处理代码


// 添加contextmenu事件
 var right = document.getElementById("right");
 EventUtil.addEventListener(right, "contextmenu", function(event) {
 event = EventUtil.getEvent(event);
 EventUtil.preventDefault(event);
 var menu = document.getElementById("menu");
 
 // 获取鼠标右击时的坐标,并设置上下文菜单出现位置
 page = EventUtil.getPagePosition(event); 
 menu.style.left = page.pageX + "px";
 menu.style.top = page.pageY + "px";
 menu.style.visibility = "visible";
 });
 
 // 添加隐藏上下文菜单事件
 EventUtil.addEventListener(document, "click", function(event) {
 var menu = document.getElementById("menu");
 menu.style.visibility = "hidden";
 });

上述代码中使用的 EventUtil 工具类,其跨浏览器事件侦听器和事件对象的使用方法,可参考文章《js跨浏览器的事件侦听器和事件对象的使用方法》。

以上内容完整展示了 JavaScript 调用上下文菜单的方法,希望对读者的学习有所帮助。

作者最新文章