| |
在JavaScript中,你可以通过监听contextmenu
事件来显示自定义的右键菜单。以下是一个简单的示例,展示如何使用document
对象来监听鼠标右键点击事件,并显示自定义菜单:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定义右键菜单</title>
<style>
/* 隐藏默认的上下文菜单 */
* {
-webkit-user-select: none;
/* Safari */
-ms-user-select: none;
/* IE/Edge */
user-select: none;
-webkit-user-drag: none;
}
#menuCard {
background-color: #ffffff;
padding: 10px 20px;
border-radius: 4px;
box-shadow: 2px 2px 10px #cccccc;
}
#menuCard ul {
list-style: none;
padding-left: 0px;
}
</style>
</head>
<body>
<h1>右键点击这里</h1>
<p>试试在这段文字上点击鼠标右键,你会看到一个自定义菜单。</p>
<script>
// 创建自定义菜单的DOM元素
var menu = document.createElement('div');
menu.style.position = 'absolute';
menu.style.display = 'none';
menu.innerHTML = `
<div id="menuCard">
<ul>
<li><a href="#1">选项1</a></li>
<li><a href="#2">选项2</a></li>
<li><a href="#3">选项3</a></li>
</ul>
</div>
`;
document.body.appendChild(menu);
// 监听右键点击事件
document.addEventListener('contextmenu', function (event) {
event.preventDefault(); // 阻止默认的上下文菜单显示
// 显示自定义菜单
menu.style.display = 'block';
menu.style.left = event.pageX + 'px';
menu.style.top = event.pageY + 'px';
// 监听菜单项的点击事件
menu.addEventListener('click', function (e) {
if (e.target.tagName === 'A') {
alert('你点击了: ' + e.target.getAttribute('href').substr(1));
}
// 隐藏自定义菜单
menu.style.display = 'none';
});
});
// 监听页面的点击事件,如果点击区域不在菜单内,则隐藏菜单
document.addEventListener('click', function (event) {
if (!menu.contains(event.target)) {
menu.style.display = 'none';
}
});
</script>
</body>
</html>
div
元素作为自定义菜单,并添加了一些列表项。contextmenu
事件来阻止默认行为,并显示自定义菜单。click
事件来处理选项的点击,并在点击后隐藏菜单。这个示例提供了一个基本的自定义右键菜单实现。你可以根据需要进一步定制样式和行为。