当前位置:首页 > JavaScript

js实现右键

2026-03-15 00:06:25JavaScript

监听右键点击事件

使用 contextmenu 事件监听右键点击。通过 addEventListener 绑定事件,event.preventDefault() 阻止默认右键菜单弹出。

document.addEventListener('contextmenu', function(event) {
  event.preventDefault();
  console.log('右键被点击');
});

自定义右键菜单

创建一个隐藏的 div 元素作为自定义菜单,通过事件对象的 clientXclientY 动态定位菜单位置。

const menu = document.createElement('div');
menu.style.display = 'none';
menu.style.position = 'absolute';
menu.style.backgroundColor = '#fff';
menu.style.border = '1px solid #ccc';
menu.innerHTML = '<ul><li>选项1</li><li>选项2</li></ul>';
document.body.appendChild(menu);

document.addEventListener('contextmenu', function(event) {
  event.preventDefault();
  menu.style.display = 'block';
  menu.style.left = `${event.clientX}px`;
  menu.style.top = `${event.clientY}px`;
});

document.addEventListener('click', function() {
  menu.style.display = 'none';
});

添加菜单功能

为菜单项绑定点击事件处理逻辑,实现具体功能。通过事件委托或直接绑定均可。

menu.querySelector('ul').addEventListener('click', function(e) {
  if (e.target.tagName === 'LI') {
    alert(`选择了: ${e.target.textContent}`);
    menu.style.display = 'none';
  }
});

兼容移动端触摸事件

在移动设备上模拟右键行为,通常通过长按触摸实现。监听 touchstarttouchend 事件判断长按动作。

let touchTimer;
document.addEventListener('touchstart', function() {
  touchTimer = setTimeout(() => {
    console.log('长按触发右键');
  }, 800);
});

document.addEventListener('touchend', function() {
  clearTimeout(touchTimer);
});

动态生成菜单内容

根据点击位置或元素类型动态生成不同的菜单选项。通过检查事件目标的 classid 实现条件渲染。

js实现右键

document.addEventListener('contextmenu', function(event) {
  const target = event.target;
  if (target.classList.contains('editable')) {
    menu.innerHTML = '<ul><li>复制</li><li>粘贴</li></ul>';
  } else {
    menu.innerHTML = '<ul><li>刷新</li><li>返回</li></ul>';
  }
});

标签: 右键js
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…