0 381 2021-05-22 10:00:02
收藏js右键控制一方面可以简单防止他人审查代码,另一方面可以更好的自定义右键属性。今天我们简单介绍JS怎样添加右键菜单。
1、在用户右键时获取右键位置,然后展示需要展示的菜单。而在用户左键时,关闭右键菜单。
2、在用户右键的位置展示出右键菜单这一步很简单,只需要添加一个绝对定位的盒子,然后将这个盒子移动到右键的位置即可。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS右键菜单功能实现</title>
</head>
<body>
<script src="/js/control.js"></script>
</body>
</html>
// 创建右键菜单盒子
let rightMenuDiv = document.createElement("div");
// 计数,用于关闭右键菜单
let rightMenuCount = 0;
// 设置右键菜单样式
rightMenuDiv.style.backgroundColor = "red";
rightMenuDiv.style.position = "absolute";
// 防止点击右键菜单中的内容的时候冒泡,导致关闭右键菜单
rightMenuDiv.addEventListener("mousedown", (event)=>{event.stopPropagation();})
// 给右键菜单添加内容(子节点)
let rightMenuChildLink = document.createElement("a");
rightMenuChildLink.appendChild(document.createTextNode("www.gray-ice.com"));
rightMenuChildLink.setAttribute("href", "https://www.gray-ice.com");
rightMenuDiv.appendChild(rightMenuChildLink);
// 展示右键菜单
function showRightMenu(x, y)
{
// 因为右键菜单有postion: absolute属性,已经脱标了,只要父元素没有定位,添加到哪都行,我这里是随便添加到底部了。
document.body.appendChild(rightMenuDiv);
// 调整右键菜单的位置,将其至于当前鼠标所在的位置上。
rightMenuDiv.style.left = String(x) + "px";
rightMenuDiv.style.top = String(y) + "px";
}
// 这里利用了事件冒泡,无论在哪个节点上点击的右键,最终都会冒泡到document上
document.addEventListener("contextmenu", function(event){
console.log(event);
// 避免触发浏览器的右键菜单
event.preventDefault();
// 显示自定义的右键菜单
showRightMenu(event.pageX, event.pageY);
// 将当前右键菜单的状态设置为 打开
rightMenuCount = 1;
})
// 关闭右键菜单
document.addEventListener("mousedown", function(event){
// 如果右键菜单当前是打开状态
if(rightMenuCount)
{
// 如果按下的是主键
if(event.button === 0)
{
// 从body上移除右键菜单
document.body.removeChild(rightMenuDiv);
// 将右键菜单的状态设置为关闭
rightMenuCount = 0;
}
}
})
// 创建100个p标签,用来测试页面高度变化是否会影响右键菜单的行为
function create100P()
{
let str = "";
for(let i = 0; i < 100; i++)
{
str += `<p>${i}</p>\n`;
}
let ps = document.createElement("div");
document.body.appendChild(ps);
ps.innerHTML = str;
}
create100P();
这样,我们就实现了JS添加右键菜单的功能。
本文来自gray-ice个人博客,原文链接JS添加右键菜单
本文地址:https://xzo.com.cn/develop/js/975.html
如果您认可我们的分享,有意与我们合作开展帝国cms网站建设与开发业务或插件定制,请联系右侧在线客服。我们能给您的,就是高质量的模板与售后。
标注了信息来源为下载鸥的文章皆为原创,如果是转载的优质文章,我们也都标注了出处。如果您喜欢我们的文章,请按照下载鸥所标注的文章出处进行标注,谢谢您的配合。
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
JavaScript十分强大,不管是前端页面开发、视觉动态渲染、数据交互还是后端逻辑处理,都可以通过JS实现。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中。
对于网站、app开发等工作而言,复制是一个非常常见的功能。很多人到处找插件...
在网站表单提交前,我们往往需要验证一下信息避免错误数据,那么,怎样验证手机号...
在通过jQuery做数据交互时我们可能存在这样的需求:通过点击按钮清空ul里的li...
通过jQuery实现点击关注按钮弹出二维码是一个比较常用的功能,今天鸥哥讲讲这...
通过灵活运用js,我们可以轻松实现点击追加相关信息到textarea的功能。这个功...
网站日常访客主要是windows和mac os两种操作系统,如果网站提供资源下载,则需...
如果是多语言站点,主动获取浏览器默认语言并自动进行跳转可以有效降低跳出率...
在很多网站中,图片的默认路径是相对于根目录的绝对路径,如果是其他站点引用,则...
使用帝国cms的企业用户、新闻资讯类站点的用户很多,此类站点很多时候需要有...
本插件适用于内网用户,可查看单篇文章访问者ip地址。如果添加访问者ip组,可查...
用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...
百度开放了系列AI功能api如图像上色、图像去雾、图像修复、无损放大、清晰...
通过本插件,可以实现帝国cms网站对接百度云api实现图像无损放大的功能。经过...
因客户需要一键推送到多平台,下载鸥开发了这款一键推送至百度、必应、神马插...
采集站的必备资源是自动审核,要做到日收录也离不开定时发布。而本插件的自动...
许多网站会做一些小功能小插件给客户使用以增强用户黏性,比如图片转文字,这种...