本文提供了一段完整的 JavaScript 代码,用于在网页中实现自定义的右键弹出菜单功能。通过监听 oncontextmenu 事件,阻止默认菜单并显示自定义 div 层。代码包含菜单项配置、样式定义及动态生成表格结构的逻辑,可直接嵌入网页使用,适用于需要定制交互体验的前端场景。
JavaScript 实现自定义右键菜单的完整代码示例
把下述脚本嵌入至<head>与</head>标签内部
----------------------------------
<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定义菜单动作,支持任意JS代码,注意避免使用双引号
//若需页面跳转可写为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>标签
----------------------------------
<body onClick="showoff();" onload="fresh();">
----------------------------------
在<body>与</body>之间添加以下标记
----------------------------------
<div id="mlay" style="position:absolute;display:none;cursor:default;" onClick="return false;"></div>
----------------------------------
完成!!!
:)