当前位置: 首页 > news >正文

javascript自定义浏览器右键菜单

HTML部分(在<body></body>之间插入以下HTML):

<div id="menu">
<ul>
<li><a href="#">contextmenuitem 1</a></li>
<li><a href="#">contextmenuitem 2</a></li>
<li><a href="#">contextmenuitem 3</a></li>
<li><a href="#">contextmenuitem 4</a></li>
<li><a href="#">contextmenuitem 5</a></li>
<li><a href="#">contextmenuitem 6</a></li>
</ul>
</div>


复制代码
<div id="menu">
    <ul>
        <li><a href="#">contextmenuitem 1</a></li>
        <li><a href="#">contextmenuitem 2</a></li>
        <li><a href="#">contextmenuitem 3</a></li>
        <li><a href="#">contextmenuitem 4</a></li>
        <li><a href="#">contextmenuitem 5</a></li>
        <li><a href="#">contextmenuitem 6</a></li>
    </ul>
</div>
复制代码

CSS部分:

查看代码

<style type="text/css">
*{margin:0;padding:0;}
#menu{position:absolute;width:150px;visibility:hidden;border:1px solid #666;border-bottom-width:0;}
#menu li{list-style:none;text-indent:1em;}
#menu li a{display:block;height:30px;line-height:30px;border-bottom:1px solid #666;text-decoration:none;color:#666;font:12px/30px tahoma;}
#menu li a:hover{background:#eee;color:black;}
</style>


复制代码
<style type="text/css">
*{margin:0;padding:0;}
#menu{position:absolute;width:150px;visibility:hidden;border:1px solid #666;border-bottom-width:0;}
#menu li{list-style:none;text-indent:1em;}
#menu li a{display:block;height:30px;line-height:30px;border-bottom:1px solid #666;text-decoration:none;color:#666;font:12px/30px tahoma;}
#menu li a:hover{background:#eee;color:black;}
</style>
复制代码

JavaScript部分:

查看代码

<script type="text/javascript">
document.oncontextmenu = function(e){
if(window.event) e = window.event;
var mymenu = document.getElementById("menu");
mymenu.style.visibility = "visible";
mymenu.style.left = e.clientX + 5 +"px";
mymenu.style.top = e.clientY + 5 + "px";
return false;
}
document.onclick = function(){
var mymenu = document.getElementById("menu");
mymenu.style.visibility = "hidden";
}
</script>


复制代码
<script type="text/javascript">
document.oncontextmenu = function(e){
 if(window.event) e = window.event;
 var mymenu = document.getElementById("menu");
 mymenu.style.visibility = "visible";
 mymenu.style.left = e.clientX + 5 +"px";
 mymenu.style.top = e.clientY + 5 + "px";
 return false;
}
document.onclick = function(){
 var mymenu = document.getElementById("menu");
 mymenu.style.visibility = "hidden"; 
}
</script>
复制代码

原理:

1.利用document.oncontextmenu将浏览器的右键菜单屏蔽(return false)。

2.在CSS中将div的visibility设置为hidden,即先把它给隐藏掉,position为absolute绝对定位,这样我们就能很容易地控制left与top的值的了。

3.在函数中获取menu为mymenu,visibility为可见(visible),再设置left与top和分别等于浏览器窗口的x,y坐标,最后再写一个document.onclick函数,只要点击,就将div的可见设置为(隐藏)hidden;

我分别测试了几款浏览器,兼容性还好吧,下面是chrome效果图:

相关文章:

  • 通过JavaScript进行验证
  • Notepad++对.tpl默认打开且高亮显示HTML代码
  • Jsp中的变量
  • Jsp中的自定义函数
  • gradle--java入门(转)
  • Jsp中的注释
  • 如何通过邮件头和传输跟踪日志查看原始客户端IP
  • Jsp中的Page指令
  • Jsp中的include指令
  • 网络流 - 割与最小割
  • jsp:param标签
  • opengl 教程(24) shadow mapping (2)
  • jsp:include标签
  • Xcode7升级之后插件无法使用与不小心点击Skipbundle的解决办法
  • jsp:forward标签
  • hexo+github搭建个人博客
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • centos安装java运行环境jdk+tomcat
  • create-react-app项目添加less配置
  • isset在php5.6-和php7.0+的一些差异
  • java8 Stream Pipelines 浅析
  • JavaScript对象详解
  • java小心机(3)| 浅析finalize()
  • JS字符串转数字方法总结
  • leetcode46 Permutation 排列组合
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Nodejs和JavaWeb协助开发
  • Objective-C 中关联引用的概念
  • Protobuf3语言指南
  • Unix命令
  • Vue.js-Day01
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 浏览器缓存机制分析
  • 配置 PM2 实现代码自动发布
  • 前端相关框架总和
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何使用 JavaScript 解析 URL
  • 深度学习在携程攻略社区的应用
  • 微信开源mars源码分析1—上层samples分析
  • 项目实战-Api的解决方案
  • 再谈express与koa的对比
  • (floyd+补集) poj 3275
  • (第一天)包装对象、作用域、创建对象
  • (九)信息融合方式简介
  • (五)网络优化与超参数选择--九五小庞
  • (转)fock函数详解
  • ****Linux下Mysql的安装和配置
  • **python多态
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net mvc 获取url中controller和action
  • .net mvc部分视图
  • .NET 材料检测系统崩溃分析
  • .net 后台导出excel ,word