<script language='javascript'> /*******以下内容可以修改***************/ var mname=new Array( "首 页", "修 改", "下 载", "删 除", "新 建", "刷 新" ); //mname是菜单对应的名称,数组的个数必须与下面murl对应 var murl=new Array( "window.open('http://www.cn5.cn','_blank','');", "alert('修改');", "alert('download');", "alert('delete');", "alert('new');", "alert('refresh');" ); //murl是菜单对应的操作,可以是任意javascript代码但是要注意不要在里面输入\",只能用' //如果要实现跳转可以这样window.location='url'; var ph=18,mwidth=50;//每条选项的高度,菜单的总宽度 var bgc="#eee",txc="black";//菜单没有选中的背景色和文字色 var cbgc="darkblue",ctxc="white";//菜单选中的选项背景色和文字色 /****************以下代码请不要修改******************/ var mover="this.style.background='"+cbgc+"';this.style.color='"+ctxc+"';" var mout="this.style.background='"+bgc+"';this.style.color='"+txc+"';" document.oncontextmenu=function() { mlay.style.display=""; mlay.style.pixelTop=event.clientY; mlay.style.pixelLeft=event.clientX; return false; } function showoff() { mlay.style.display="none"; } function fresh() { mlay.style.background=bgc; mlay.style.color=txc; mlay.style.width=mwidth; mlay.style.height=mname.length*ph; var h="<table width=100% height="+mname.length*ph+"px cellpadding=0 cellspacing=0 border=0>"; var i=0; for(i=0;i<mname.length;i++) { h+="<tr align=center height="+ph+" onclick=\""+murl[i]+"\" onMouseover=\""+mover+"\" onMouseout=\""+mout+"\"><td style='font-size:9pt;'>"+mname[i]+"</td></tr>"; } h+="</table>"; mlay.innerHTML=h; } </script> <body onClick="showoff();" onload="fresh();"><div id="mlay" style="position:absolute;display:none;cursor:default;" onClick="return false;"></div> </body>
不用jquery 该怎么判断呢?:)
在document的 click事件中判断源对象 是不是你那个图,不是就关了。
简单地说是用事件冒泡,分析点击来自哪个元素, e=e||window.event; var target=e.target||e.srcElement; 在点击时,可以先保存target到一个临时对象,然后再次的点击时,如果分析到当前的target为别的元素,即可对之前的临时对象进行操作,如果对其进设置隐藏之类.
点击页面时查 event 的 来源, 如果不是 id, 就尝试关闭此id的divjquery: $("#theid").hide();
<script language='javascript'>
/*******以下内容可以修改***************/
var mname=new Array(
"首 页",
"修 改",
"下 载",
"删 除",
"新 建",
"刷 新"
);
//mname是菜单对应的名称,数组的个数必须与下面murl对应 var murl=new Array(
"window.open('http://www.cn5.cn','_blank','');",
"alert('修改');",
"alert('download');",
"alert('delete');",
"alert('new');",
"alert('refresh');"
);
//murl是菜单对应的操作,可以是任意javascript代码但是要注意不要在里面输入\",只能用'
//如果要实现跳转可以这样window.location='url';
var ph=18,mwidth=50;//每条选项的高度,菜单的总宽度
var bgc="#eee",txc="black";//菜单没有选中的背景色和文字色
var cbgc="darkblue",ctxc="white";//菜单选中的选项背景色和文字色 /****************以下代码请不要修改******************/
var mover="this.style.background='"+cbgc+"';this.style.color='"+ctxc+"';"
var mout="this.style.background='"+bgc+"';this.style.color='"+txc+"';" document.oncontextmenu=function()
{
mlay.style.display="";
mlay.style.pixelTop=event.clientY;
mlay.style.pixelLeft=event.clientX;
return false;
}
function showoff()
{
mlay.style.display="none";
} function fresh()
{
mlay.style.background=bgc;
mlay.style.color=txc;
mlay.style.width=mwidth;
mlay.style.height=mname.length*ph;
var h="<table width=100% height="+mname.length*ph+"px cellpadding=0 cellspacing=0 border=0>";
var i=0;
for(i=0;i<mname.length;i++)
{
h+="<tr align=center height="+ph+" onclick=\""+murl[i]+"\" onMouseover=\""+mover+"\" onMouseout=\""+mout+"\"><td style='font-size:9pt;'>"+mname[i]+"</td></tr>";
}
h+="</table>";
mlay.innerHTML=h;
}
</script>
<body onClick="showoff();" onload="fresh();"><div id="mlay" style="position:absolute;display:none;cursor:default;" onClick="return false;"></div>
</body>
e=e||window.event;
var target=e.target||e.srcElement;
在点击时,可以先保存target到一个临时对象,然后再次的点击时,如果分析到当前的target为别的元素,即可对之前的临时对象进行操作,如果对其进设置隐藏之类.
谢谢,我判断在图片oncontextmenu事件,怎么把body的oncontextmenu事件去掉呢?
没什么后遗症,只要保证id是唯一的至于对contextmenu 的控制,firefox是有限制的, 见 firefox 选项 -> 内容 -> javascript -> 高级