目前右键菜单在各个系统中还频率使用比较高的。最近系统中用到了,就写了一个。还是比较好使用的(主要是方便)。现在把一些源码发放。
在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"/> <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;
}
在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"/> <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;
}