JS右键菜单

来源:互联网 发布:telnet 端口连接失败 编辑:程序博客网 时间:2024/04/30 09:04
目前右键菜单在各个系统中还频率使用比较高的。最近系统中用到了,就写了一个。还是比较好使用的(主要是方便)。现在把一些源码发放。
在list循环每一列的时候加上这么一句话:<tr oncontextmenu="showMenu(id);></tr>.
然后在列表页面最下面加入
<!-- 右键菜单属性 -->
<div class="skin0" id="main_menu" onmouseover="highlightie(event, 'menuitems');" onmouseout="lowlightie(event, 'menuitems');">
<div class="menuitems" id="tQId" ><span onmouseover="showTypeSubMenu('dd_auditTypes');" onmouseout="hideTypeSubMenu('dd_auditTypes', false);"><img width="15px" height="15px" align="absmiddle" src="<%=request.getContextPath()%>/images/menu/new.gif" border="0"/>&nbsp;<bean:message key="common.create"/></span></div>
</div>

highlightie与lowlightie方法:  --  见附件

主要还是showMenu方法:仔细看下:
function showMenu(id, responsorId, hasAdminPermission) {
  qId = id;
  /**权限开始**/
  if (hasAdminPermission != true && responsorId != <%=operator.getId()%>) {
    $("uQId").style.display = "none";
    $("hId").style.display = "none";   
  } else {
    $("uQId").style.display = "";
    $("hId").style.display = "";   
  }
  if (hasAdminPermission != true) {
    $("sQId").style.display = "none";
  }
   /**权限结束**/
  var dbcw = document.body.clientWidth, dbch = document.body.clientHeight;
  var dbsl = document.body.scrollLeft, dbst = document.body.scrollTop;
  var event=getEvent();
  var rightedge = dbcw-event.clientX;
  var bottomedge = dbch-event.clientY;
  main_menu.style.display = "";
  if (rightedge < main_menu.offsetWidth)  {
    main_menu.style.left =dbsl + event.clientX - main_menu.offsetWidth;
  } else {
    main_menu.style.left =dbsl + event.clientX;
  }
  if (bottomedge < main_menu.offsetHeight) {
    var t = dbst + event.clientY - main_menu.offsetHeight;
    main_menu.style.top = t > 70 ? t : 70;
  } else {
    main_menu.style.top = dbst + event.clientY;
  }

  main_menu.style.visibility = "visible";
  event.returnValue = false;
  return false;
}

二级菜单移动方法:

function showTypeSubMenu(type) {
  var ts, ss;
  var cp = parent.frames['controlboard'];
  var dd_type = $(type);

  var dbcw = document.body.clientWidth, dbch = document.body.clientHeight;
  var dbsl = document.body.scrollLeft, dbst = document.body.scrollTop;
  var event=getEvent();
  var mmx = parseInt(main_menu.style.left.substring(0, main_menu.style.left.indexOf('p')));
  var mmy = parseInt(main_menu.style.top.substring(0, main_menu.style.top.indexOf('p')));
  var rightedge = dbcw-mmx - main_menu.offsetWidth;
  var bottomedge = dbch-mmy;
  dd_type.style.display = "";
  if (rightedge < dd_type.offsetWidth) {
    dd_type.style.left =mmx - dd_type.offsetWidth + 1;
  } else {
    dd_type.style.left =mmx + main_menu.offsetWidth - 1;
  }
  dd_type.style.top = dbst + event.clientY - 20;
  dd_type.style.visibility = "visible";
  event.returnValue = false;
  return false;
}
原创粉丝点击