cMenu

该博客主要围绕网页自定义右键菜单功能展开。通过CSS设置菜单样式,利用JavaScript编写函数实现菜单的显示、隐藏、鼠标事件处理等功能,还对一些按键操作进行了屏蔽和功能绑定,如屏蔽F5、Ctrl+N等,同时提供了复制、粘贴、刷新等操作选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<style>
.cMenu {
FILTER: alpha(opacity=150);BACKGROUND-COLOR: #D6D3CE;BORDER-BOTTOM: #666666 2px solid;
BORDER-LEFT: #E4E4E4 2px solid; BORDER-RIGHT: #666666 2px solid; BORDER-TOP: #E4E4E4
2px solid; COLOR: #000000; CURSOR: default; FONT-SIZE: 9pt; color:#000000;FONT-
WEIGHT: normal; LINE-HEIGHT: 20px; POSITION: absolute; VISIBILITY: hidden; WIDTH:
110px
}


.menuitems {
BACKGROUND-COLOR: #D6D3CE;
background:#D6D3CE;
border:none
align:left;
text-align:left;
width:100%;

border-width:0px;
font-size:9pt;
MARGIN: 0px;
PADDING-BOTTOM: 0px;
   PADDING-LEFT: 3px;
   PADDING-RIGHT: 3px;
   PADDING-TOP: 0px;
}
</style>
<script>
var currentcontextmenuevent;
var currentcontextmenutextobj=null;
function calldefinedfunction(i_index){
 switch(i_index){
 case 1: //后退
  history.back() ;
  break;
 case 2: //查看源文件
  window.location = "view-source:" + window.location.href;
  break;
 case 3: //刷新
  window.location.reload();
  break ;
 case 4: //添加到收藏夹
  window.external.AddFavorite(location.href, document.title);
  break;
 case 5://全选
  document.execCommand("selectAll")
  break;
 case 6://复制
  document.execCommand('copy');
  break;
 case 7://粘贴
  if(currentcontextmenutextobj!=null){
currentcontextmenutextobj.focus();
document.execCommand('Paste');
  }
  break;
 case 8://关闭
  top.close();
  break;
 default://自定义操作
  try{eval(i_index)}catch(e){}
 }
}

//获取右键事件,纪录当前菜单对象,显示当前菜单
function document.oncontextmenu(){
 hiddenMenu();
 var temp=event.srcElement;
 currentcontextmenutextobj=temp;
 
 while(temp.parentElement!=null && temp.contextmenu_obj==undefined){
  temp=temp.parentElement
 }
 
 if(temp.contextmenu_obj!=undefined){
  if(eval(temp.contextmenu_obj)!=null)
   currentcontextmenuevent=eval(temp.contextmenu_obj);
  else
   return false;
 }else if(temp.tagName=="HTML"){
  //未定义右键菜单或者没有任何标签引用了菜单
  if(document.all("ie5menu")!=null){
   if(document.all("ie5menu").tagName!="DIV")return false;
  }else{
   var oDiv=document.createElement('<div id="ie5menu" class="cMenu" style="visibility:hidden;z-index:50000000"></div>');
     document.body.appendChild(oDiv);
     var str_table='<table width="100%" class="menuitems" ><tbody id="contextmenu_public" width="100%"><tr><td width="100%" class="menuitems"><input onMouseOut="contextmenu_mouseout(this)" onMouseOver="contextmenu_mouseover(this)" style="cursor:hand" width="100%" type="button" class="menuitems" value="复制(C)" name="copybutton" οnclick="calldefinedfunction(6)"/></td></tr><tr><td class="menuitems"><input onMouseOut="contextmenu_mouseout(this)" onMouseOver="contextmenu_mouseover(this)" style="cursor:hand" type="button" class="menuitems" value="粘贴(P)" name="pastebutton" οnclick="calldefinedfunction(7)"/></td></tr><tr><td class="menuitems"><hr size="2" style="BORDER-TOP: #888888 1px solid;BORDER-BOTTOM: #E4E4E4 1px solid;" width="100%"/></td></tr>';
   str_table+='<tr><td width="100%" class="menuitems"><input onMouseOut="contextmenu_mouseout(this)" onMouseOver="contextmenu_mouseover(this)" style="cursor:hand" width="100%" type="button" class="menuitems" value="刷新(R)" name="refreshbutton" οnclick="calldefinedfunction(3)"/></td></tr>';
   str_table+='<tr><td width="100%" class="menuitems"><input onMouseOut="contextmenu_mouseout(this)" onMouseOver="contextmenu_mouseover(this)" style="cursor:hand" width="100%" type="button" class="menuitems" value="查看源文件(V)" name="viewsource" οnclick="calldefinedfunction(2)"/></td></tr>';
   str_table+='<tr><td class="menuitems"><input onMouseOut="contextmenu_mouseout(this)" onMouseOver="contextmenu_mouseover(this)" style="cursor:hand" width="100%" type="button" class="menuitems" value="关闭窗口(K)" name="closebutton" οnclick="calldefinedfunction(8)"/></td></tr>'
   str_table+='</tbody></table>';
     document.all("ie5menu").innerHTML=str_table;
  }
  currentcontextmenuevent=document.all("ie5menu")
 }
 
 ShowMenu();
 return false;
}

//获取左键事件,并调用隐藏当前菜单函数
function document.onclick(){
 hiddenMenu();
}

//显示层菜单
function ShowMenu(){
 hiddenMenu();//初始、把所有层隐藏
 var rightedge=document.body.clientWidth-event.clientX
 var bottomedge=document.body.clientHeight-event.clientY

 var LayerID=currentcontextmenuevent;
 //定位层的位置、显示层
 if (rightedge<LayerID.offsetWidth){
  LayerID.style.left=document.body.scrollLeft+event.clientX-LayerID.offsetWidth;
 }else{
  LayerID.style.left=document.body.scrollLeft+event.clientX;
 }
 if (bottomedge<LayerID.offsetHeight){
  LayerID.style.top=document.body.scrollTop+event.clientY-LayerID.offsetHeight;
 }else{
  LayerID.style.top=document.body.scrollTop+event.clientY;
 }
 LayerID.style.visibility="visible";
 return false;
}

//将当前菜单隐藏起来
function hiddenMenu(){
 if(currentcontextmenuevent!=undefined && currentcontextmenuevent!=null)
  currentcontextmenuevent.style.visibility="hidden";
}

//菜单鼠标onMouseOut事件
function contextmenu_mouseover(){
 event.srcElement.style.backgroundColor="highlight";
 event.srcElement.style.color="white"
}

//菜单鼠标onMouseOver事件
function contextmenu_mouseout(){
 event.srcElement.style.backgroundColor="";
 event.srcElement.style.color="#000000"
}

//自定义菜单
function definemenuitem(itemname,itemmethod){
 var str_html='<tr><td width="100%" class="menuitems"><input onMouseOut="contextmenu_mouseout(this)" onMouseOver="contextmenu_mouseover(this)" style="cursor:hand" width="100%" type="button" class="menuitems" value="'+itemname+'" οnclick="calldefinedfunction(/''+itemmethod+'/')"/></td></tr>'
 document.write(str_html);
}

function document.onkeydown(){
 //屏蔽f5

 if(event.keyCode==116){
  event.keyCode=0;
  return false
 }

 //屏蔽clt+n
 if(event.ctrlKey && event.keyCode==78){
  return false;
 }
 
 if(event.keyCode==86){
  //V键
  if(currentcontextmenuevent!=null && currentcontextmenuevent.style.visibility!="hidden"){
if(currentcontextmenuevent.all("viewsource")!=null){
 currentcontextmenuevent.all("viewsource").click();
 return false;
}
  }
 }
 if(event.keyCode==82){
  //R键
  if(currentcontextmenuevent!=null && currentcontextmenuevent.style.visibility!="hidden"){
if(currentcontextmenuevent.all("refreshbutton")!=null){
 currentcontextmenuevent.all("refreshbutton").click();
 return false;
}
  }
 }
 if(event.keyCode==70){
  //F键
  if(currentcontextmenuevent!=null && currentcontextmenuevent.style.visibility!="hidden"){
if(currentcontextmenuevent.all("addselectionbutton")!=null){
 currentcontextmenuevent.all("addselectionbutton").click();
 return false;
}
  }
 }
 if(event.keyCode==67){
  //C键
  if(currentcontextmenuevent!=null && currentcontextmenuevent.style.visibility!="hidden"){
if(currentcontextmenuevent.all("copybutton")!=null){
 currentcontextmenuevent.all("copybutton").click();
 return false;
}
  }
 }
 if(event.keyCode==80){
  //P键
  if(currentcontextmenuevent!=null && currentcontextmenuevent.style.visibility!="hidden"){
if(currentcontextmenuevent.all("pastebutton")!=null){
 currentcontextmenuevent.all("pastebutton").click();
 return false;
}
  }
 }
 if(event.keyCode==75){
  //K键
  if(currentcontextmenuevent!=null && currentcontextmenuevent.style.visibility!="hidden"){
if(currentcontextmenuevent.all("closebutton")!=null){
 currentcontextmenuevent.all("closebutton").click();
 return false;
}
  }
 }
}
</script>
测试复制粘贴文本区
<textarea>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值