2018-06-03 22:26:41 +08:00

90 lines
2.9 KiB
JavaScript

var als7_cmenu_body;
var als7_cmenu_shadow;
var als8_cmenu_closer;
function initASContextMenu(menu){
menu.find(">div").each(function(e){
var item=$(this);
if(item.hasClass("menu-sep")){
item.html(" ");
}
else{
var text=item.addClass("menu-item").html();
item.empty().append($("<div class=\"menu-text\"></div>").html(text));
var iconCls=item.attr("iconCls")||item.attr("icon");
if(iconCls){
$("<div class=\"menu-icon\"></div>").addClass(iconCls).appendTo(item);
}
item.mouseover(function(e){item.addClass("menu-active");});
item.mouseout(function(e){item.removeClass("menu-active");});
item.click(function(e){hideASContextMenu(e,true);});
}
});
};
function hideASContextMenu(e,forceClose){
if(als7_cmenu_body)als7_cmenu_body.hide();
if(als7_cmenu_shadow)als7_cmenu_shadow.hide();
}
function showASContextMenu(menu,e,x,y){
var iLeft = e.clientX?e.clientX:e.x;
var iTop = e.clientY?e.clientY:e.y;
iTop = iTop + document.body.scrollTop;
if(x && !isNaN(x)) iLeft += x;
if(y && !isNaN(y)) iTop += y;
//修正右键菜单在最右端、最下端时的位置
if(document.body.offsetWidth - iLeft < menu.width()) iLeft = iLeft - menu.width();
if(document.body.offsetHeight - iTop < menu.height()) iTop = iTop - menu.height();
menu.css({left:iLeft,top:iTop});
//创建阴影效果
if(als7_cmenu_shadow==undefined){
als7_cmenu_shadow = $("<div class=\"menu-shadow\"></div>").insertAfter(menu);
}
als7_cmenu_shadow.css({display:"block",zIndex:99,left:iLeft,top:iTop,width:menu.outerWidth(),height:menu.outerHeight()});
menu.css("z-index",100);
menu.show();
}
function isClickOnMe(e){
if(e.srcElement){
if (e.srcElement.parentNode==undefined)
return true;
if(e.srcElement.parentNode.id==als7_cmenu_body.attr('id') || e.srcElement.parentNode.parentNode.id==als7_cmenu_body.attr('id'))
return true;
else
return false;
}
else if(e.target){
if (e.target.parentNode==undefined)
return true;
if(e.target.parentNode.id==als7_cmenu_body.attr('id') || e.target.parentNode.parentNode.id==als7_cmenu_body.attr('id'))
return true;
else
return false;
}
else
return false;
}
function bindASContextMenu(objectid,e,x,y){
e = (e==undefined?event:e);
if(!als7_cmenu_body){
als7_cmenu_body = $('#' + objectid);
initASContextMenu(als7_cmenu_body);
}
if(!isClickOnMe(e))
showASContextMenu(als7_cmenu_body,e,x,y);
}
if(document.addEventListener){
document.addEventListener("click",documentOnmousedown,false);
}
else{
document.attachEvent("onclick",documentOnmousedown,false);
}
function documentOnmousedown(e){
try{
if(e.srcElement &&( e.srcElement.type=='radio' || e.srcElement.type=='checkbox' || e.srcElement.type=='select-one' || e.srcElement.type=='select-multiple'))
CHANGED = true;
else if(e.target &&( e.target.type=='radio' || e.srcElement.target=='checkbox' || e.srcElement.type=='select-one' || e.srcElement.type=='select-multiple'))
CHANGED = true;
}
catch(e){}
hideASContextMenu(e,true);
}