• JavaScript右键菜单


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>右键菜单</title>
    <style type="text/css">
    	html,body{margin:0px;padding:0px;100%;height:100%;font-size:12px;overflow:show;}
      .contextMenu{position:absolute;100px;height:50px;margin:100px;padding:2px;border:1px solid #cccccc;background-color:#F2F2EE;}
      ul,li{list-style:none;margin:0px;padding:0px;}
      .item{list-style:none;margin:0px;padding:0px;height:25px;line-height:25px;display:block;padding:0px;padding-left:10px;}
      .itemOver{background-color:#316AC5;color:#fff;cursor:default;}
       .separator{height:1px;border-top:1px solid #cccccc;margin:0px;padding:0px;}
    </style>
    
    <script type="text/javascript">
    <!--
    
    function contextMenu(props,events){
       this.props = props;
       this.events = events;
    }
    
    contextMenu.prototype.buildContextMenu = function(){
       var menuObj = document.getElementById(this.props.menuID);
       var targetEle = this.props.targetEle;
       var eventFunc = this.events;
    
       document.oncontextmenu = function(evt){
    	 	 try{
    			    clearEventBubble(evt);
    				  var cobj = ele(evt);
    				  if(cobj.className == targetEle){
    				  	
    			  	var _items = menuObj.getElementsByTagName("li");
    			  	for(var i=0;i<_items.length;i++){
    			  		if(_items[i].className != "separator"){
    			  			 _items[i].className = "item";
    				  		 _items[i].onmouseover = function(){this.className ="item itemOver";};
    				  		 _items[i].onmouseout = function(){this.className = "item";}	;
    				  		 _items[i].onclick = function(){hide();func(this.id,cobj);};
    			  	  }
    			  	}
    			  	
    			  	var _bodyWidth = document.body.offsetWidth ||document.body.clientWidth;
    			  	var _bodyHeight = document.body.offsetHeight || document.body.clientHeight;
    			  	var _mWidth = menuObj.style.width;
    			  	var _mHeight = menuObj.offsetHeight;
    			  	
    					menuObj.style.left =((parseInt(getX(evt))+parseInt(_mWidth)) > parseInt(_bodyWidth)?(parseInt(getX(evt))-parseInt(_mWidth)):getX(evt))+"px";
    					menuObj.style.top =((parseInt(getY(evt))+parseInt(_mHeight)) > parseInt(_bodyHeight)?(parseInt(getY(evt))-parseInt(_mHeight)):getY(evt))+"px";
    			  	menuObj.style.display = "block";
    	
    			  }else{
    			    hide();	
    			  }
    			  
    		  }catch(e){
    		  }finally{
    		  	clearEventBubble(evt);
    		  	return false;	
    		  }
    	  
     }
     
     document.onclick = function(){hide();}
      
      func = function(fid,srcEle){
      		eventFunc.bindings[fid](srcEle);
      }
      
      hide = function(){
       	 try{
      		 if(menuObj){
      		 		menuObj.style.display = "none";
      		 	}
      	}catch(e){}
      }
      ele = function(evt){
          evt = evt||window.event;
    		  return (evt.srcElement || evt.target);
       }
    
    }
    
    
    /*==============================================================*/
     	function getX(evt){
    		 	evt = evt || window.event;
    		   /**
    		   CssRain---增加代码. 8月20日 
    		   使右键菜单,在有滚动条的情况下,也能正常在点击出弹出。
    		   */
    			var scrollPosX; 
    			if (typeof window.pageYOffset != 'undefined') { 
    			   scrollPosX = window.pageXOffset; 
    			} 
    			else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') { 
    			   scrollPosX = document.documentElement.scrollLeft; 
    			} 
    			else if (typeof document.body != 'undefined') { 
    			   scrollPosX = document.body.scrollLeft; 
    			} 
    
    		 	return (evt.x || evt.clientX || evt.pageX)+scrollPosX;
    	}
    	
    			function getY(evt){
    			evt = evt || window.event;
    			/**
    		   CssRain---增加代码. 8月20日 
    		   使右键菜单,在有滚动条的情况下,也能正常在点击出弹出。
    		   */
    			var scrollPosY; 
    			if (typeof window.pageYOffset != 'undefined') { 
    			   scrollPosY = window.pageYOffset; 
    			} 
    			else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') { 
    			   scrollPosY = document.documentElement.scrollTop; 
    			} 
    			else if (typeof document.body != 'undefined') { 
    			   scrollPosY = document.body.scrollTop; 
    			} 
    
    		 	return (evt.y || evt.clientY || evt.pageY)+scrollPosY;
    	}
    	
    	function clearEventBubble(evt){
    	   evt = evt || window.event;
    	   
    	   if(evt.stopPropagation){
    	   	 evt.stopPropagation();
    	   }else{
    	     evt.cancelBubble = true; 
    	   }
    	   
        if(evt.preventDefault){
        	 evt.preventDefault();
        }else{ 
           evt.returnValue = false;
        }
    
    	} 
    
    
    
    //-->
    </script>
    
    </head>
    <body>
     <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/>
    
      <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/> <br/>
    
    <div id="c11" class="contextMenu" style="top:20px;left:100px;">c11 -- 右击我</div>
    <div id="c22" class="contextMenu" style="top:20px;left:250px;">c22 -- 右击我</div>
    <div id="c33" class="contextMenu" style="top:20px;left:400px;">c33 -- 右击我</div>
    <div id="c44" class="contextMenu" style="top:20px;left:550px;">c44 -- 右击我</div>
    
    
     <div id="bmenu" style="position:absolute;display:none;top:0px;left:0px;150px;margin:0px;padding:2px;border:1px solid #cccccc;background-color:#CEE2FF;">
     		<ul>
     			<li id="checkLink">检测连接</li>	
     			<li id="edit">编辑</li>
    
     			<li id="del">删除</li>
     			<li class="separator"></li>
     			<li id="prop">属性</li>
     		</ul>
     </div>
     <br/>
    </body>
    <script type="text/javascript">
     var cmenu = new contextMenu(
        {
    	 	 menuID : "bmenu",
    	 	 targetEle : "contextMenu"
    	 	},
    	 	{
    	 	 bindings:{
    	 	 		'checkLink' : function(o){alert("检测连接 "+o.id);},
    	 	 		'edit' : function(o){alert("编辑 "+o.id);},
    	 	 		'del' : function(o){alert("删除 "+o.id);},
    	 	 		'prop' : function(){alert("查看属性");}
    	 	 	}
    	 	 }
     	);
     
     cmenu.buildContextMenu();
    </script>
    
    <!--google广告开始-->
    <style>
    *{
     font-size:12px;
    }
    .highlight{
     font-weight:bold;
     color:red;
    }
    </style>
    <p class="highlight">如果觉得代码对你有帮助 , 请广告支持cssrain.</p>
    <div style="text-align:center:">
    	<script type="text/javascript"><!--
    	google_ad_client = "pub-0545040803774316";
    	/* 728x90, 创建于 08-6-5 */
    	google_ad_slot = "7034803449";
    	google_ad_width = 728;
    	google_ad_height = 90;
    	//-->
    	</script>
    	<script type="text/javascript"
    	src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    	</script>
    </div>
    	<!--google广告结束-->
    
    </html> 
  • 相关阅读:
    网页挂马实验
    基于内核网络过滤实验
    基与内核的键盘记录实验
    网络蠕虫病毒代码分析
    脚本病毒编写实验
    病毒查找与清除实验
    木马分析(植入分析)实验
    木马分析(控制分析)实验
    木马分析(隐藏分析)实验
    移动存储型病毒分析实验
  • 原文地址:https://www.cnblogs.com/luluping/p/1440031.html
Copyright © 2020-2023  润新知