JavaScript 实现自定义右键菜单的两种方法

作者:像素猫时间:2026-10-24 07:41:45浏览:493

本文介绍在JavaScript中实现自定义右键菜单的两种常见方式。第一种通过动态创建DOM元素并插入页面,第二种利用预先存在的隐藏元素进行位置调整。核心在于监听contextmenu事件以阻止浏览器默认菜单,并通过mousedown事件处理关闭逻辑,适用于需要定制交互体验的场景。

自定义右键菜单实现概述

本文分享使用JavaScript实现自定义右键菜单的具体代码示例,供读者参考学习。

该方案主要应用于需要拦截浏览器默认右键菜单的场景。当用户点击鼠标右键时,通过阻止默认行为并执行自定义逻辑,从而实现预期的交互效果。

动态创建元素方式

实现自定义菜单主要有两种思路,第一种方法是通过JavaScript动态创建DOM元素来实现。


<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    body {
      height: 3000px;
    }
    
    .menu {
      width: 100px;
      height: 280px;
      background-color: red;
      position: absolute;
      left: 0;
      top: 0;
      display: none;
    }
  </style>
</head>

<body>
  <script>
    var Bon = true;
    var menu = null;
    document.oncontextmenu = function(event) {
      if (Bon) {
        menu = document.createElement("div");
        menu.classList.add("menu");
        document.body.appendChild(menu);
        menu.style.left = event.pageX + "px";
        menu.style.top = event.pageY + "px";
        menu.style.display = "block";
        Bon = false;
        event.preventDefault();
      } else {
        menu.style.left = event.pageX + "px";
        menu.style.top = event.pageY + "px";
        event.preventDefault();
      }
    }

    document.onmousedown = function(e) {
      if (e.button == 0) {
        var menu = document.querySelector(".menu");
        document.body.removeChild(menu);
        Bon = true;
      }
    }
  </script>
</body>

</html>

隐藏元素显示方式

第二种方法则是基于页面中预先存在的隐藏元素,通过调整其样式属性来显示菜单。


<div class="menu"></div>
 <script>
    var menu = document.querySelector(".menu");
    document.oncontextmenu = function(event) {
      menu.style.left = event.pageX + "px";
      menu.style.top = event.pageY + "px";
      menu.style.display = "block";
      event.preventDefault();
    }
    document.onmousedown = function(e) {
      if (e.button == 0) {
        menu.style.display = "none";
      }
    }
</script>

执行上述逻辑后,点击右键将不再弹出浏览器默认的上下文菜单,而是显示开发者设定的自定义菜单样式,如图中红框所示部分。

自定义右键菜单实现概述

以上内容为本文的全部介绍,希望能为读者的学习提供便利,同时也欢迎大家继续关注本站获取更多技术分享。

作者最新文章