Javascript实现的简单右键菜单类


Posted in Javascript onSeptember 23, 2015

本文实例讲述了Javascript实现的简单右键菜单类。分享给大家供大家参考。具体如下:

这是自己写的一个右键菜单类,屏蔽掉了IE固有的右键菜单,一共有四个参数:第一个是出发显示右键菜单的div的id

第二个是右键菜单这个层的id,根据这个id去创建一个新的层,menuList是菜单项的列表,对应了点击一个菜单项后触发的函数,classList是菜单的class名称,以及菜单项对应的class名称,包含了鼠标滑过时的class。

运行效果截图如下:

Javascript实现的简单右键菜单类

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>右键菜单</title>
<style type="text/css">
.cmenu
{
 position:absolute;
 top:100px;
 left:100px;
 width:200px;
 height:200px;
 background-color:white;
 border:1px solid pink;
}
.liAble
{
 font-family:"宋体";
 color:#6699CC;
 margin-left:10px;
 margin-top:5px;
 list-style-type:none;
 cursor:default;
}
.liMouseOver
{
 margin-left:10px;
 margin-top:5px;
 background-color:#CCFFFF;
 list-style-type:none;
 cursor:default;
}
</style>
</head>
<body>
<div style="margin-left:auto; margin-right:auto; height:300px; width:60%;background-color:#CC6699" id="x">
</div>
<input type="hidden" id="value1" value="4" />
<input type="hidden" id="value2" value="5" />
<script type="text/javascript">
//右键菜单类
function RightHandMenu(div,menuDiv,menuList,classList)
{
 var oThis = this;
 this._menuList = 
 {
 }
 this._classList = 
 {
  objClass:'',
  MenuClass:'',
  liAbleClass:'',
  liMouseOverClass:''
 }
 this.Init = function()
 {
  this._obj = $(div);
  this._obj.oncontextmenu = function(e){oThis.ShowMenu(e)};
  this._obj.className = this._classList.objClass;
  document.onclick = function(){oThis.HiddenMenu()};
  objToObj(this._classList, classList);
  objToObj(this._menuList, menuList);
 }
 this.CreateMenu = function()
 {
  if($(menuDiv))
  {
   alert("该ID已被占用");
   return;
  }
  this._menu = document.createElement("DIV");
  this._menu.id = menuDiv;
  this._menu.oncontextmenu = function(e){stopBubble(e)};
  this._menu.className = this._classList.MenuClass;
  this._menu.style.display = "none";
  document.body.appendChild(this._menu);
 }
 this.CreateMenuList = function()
 {
  for(var pro in this._menuList)
  {
   var li = document.createElement("LI");
   li.innerHTML = pro;
   this._menu.appendChild(li);
   li.className = this._classList.liAbleClass;
   li.onclick = this._menuList[pro];
   li.onmouseover = function(){oThis.ChangeLiClass(this,oThis._classList.liMouseOverClass)}
   li.onmouseout = function(){oThis.ChangeLiClass(this,oThis._classList.liAbleClass)}
  }
 }
 this.ChangeLiClass = function(obj,name)
 {
  obj.className = name
 }
 this.ShowMenu = function(e)
 {
  var e = e || window.event;
  stopBubble(e);
  var offsetX = e.clientX;
  var offsetY = e.clientY;
  with(this._menu.style)
  {
   display = "block";
   top = offsetY + "px";
   left = offsetX + "px";
  }
 }
 this.HiddenMenu = function()
 {
  this._menu.style.display = "none";
 }
 this.Init();
 this.CreateMenu();
 this.CreateMenuList();
}
function stopBubble(oEvent)
{
 if(oEvent.stopPropagation) oEvent.stopPropagation();
 else oEvent.cancelBubble = true;
  if(oEvent.preventDefault) oEvent.preventDefault();
 else oEvent.returnValue = false;
}
function $(div)
{
 return 'string' == typeof div ? document.getElementById(div) : div;
}
function objToObj(destination,source)
{
 for(var pro in source)
 {
  destination[pro] = source[pro];
 }
 return destination;
}
//构造右键菜单
function Edit()
{
 alert("edit");
}
function Delete()
{
 alert("delete");
}
var menuList = 
{
 编辑:Edit,
 删除:Delete
}
var classList = 
{
 MenuClass:'cmenu',
 liAbleClass:'liAble',
 liMouseOverClass:'liMouseOver'
}
var x = new RightHandMenu("x","testDiv",menuList,classList)
</script>
</body>
</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
Apr 20 Javascript
javascript 设计模式之单体模式 面向对象学习基础
Apr 18 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
Oct 17 Javascript
JS实现网页表格自动变大缩小的方法
Mar 09 Javascript
javascript制作的滑动图片菜单
May 15 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
详解node Async/Await 更好的异步编程解决方案
May 10 Javascript
vuex实现的简单购物车功能示例
Feb 13 Javascript
vue+express+jwt持久化登录的方法
Jun 14 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
Sep 18 Javascript
简单了解JavaScript sort方法
Nov 25 Javascript
详细谈谈JavaScript中循环之间的差异
Aug 23 Javascript
js实现无限级树形导航列表效果代码
Sep 23 #Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
Sep 23 #Javascript
JS实现3D图片旋转展示效果代码
Sep 22 #Javascript
JS+CSS实现带小三角指引的滑动门效果
Sep 22 #Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
Sep 22 #Javascript
JavaScript脚本判断蜘蛛来源的方法
Sep 22 #Javascript
jQuery实现的经典滑动门效果
Sep 22 #Javascript
You might like
深入PHP与浏览器缓存的分析
2013/06/03 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
js模拟类继承小例子
2010/07/17 Javascript
namespace.js Javascript的命名空间库
2011/10/11 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
对python requests发送json格式数据的实例详解
2018/12/19 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
3种适用于Python的疯狂秘密武器及原因解析
2020/04/29 Python
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
财务会计毕业生个人求职信
2014/02/03 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
项目经理任命书内容
2014/06/06 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
大学生逃课检讨书
2015/05/04 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
给朋友的赠语
2015/06/23 职场文书
工作感言一句话
2015/08/01 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
python实现简单区块链结构
2021/04/25 Python
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL