js浏览器鼠标右键出现下拉框事件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			*{
				padding: 0;
				margin: 0;
			}
			body{
				height: 3000px;
			}
			ul{
				width: 200px;
				display: none;
				list-style: none;
				border: 1px solid #333;
				box-shadow: 2px 2px 0px #aaa;
				position: absolute;
			}
			ul li{
				padding: 10px 0 10px 25px;
				box-sizing: border-box;
				font-size: 12px;
				color: #111;
			}
			ul li:nth-child(3){
				border-bottom: 1px solid #ddd;
			}
			ul li:nth-child(6){
				border-bottom: 1px solid #ddd;
			}
		</style>
	</head>
	<body>
		<ul>
			<li>后退</li>
			<li>前进</li>
			<li>重新加载</li>
			<li>另存</li>
			<li>打印</li>
			<li>投射</li>
			<li>翻译成中文</li>
			<li>查看源代码</li>
			<li>检查</li>
		</ul>
	</body>
	<script type="text/javascript">
		var ul = document.querySelector('ul');
		var li = document.querySelectorAll('li');
		
		document.oncontextmenu = function (ev){
			ev = ev || window.event;
//			阻止默认行为,三目,ture是高级版本浏览器,false是ie9以下的浏览器
			ev.preventDefault?ev.preventDefault():ev.returnValue=false;
			ul.style.display = 'block';

//			clientWidth可视宽度
//			offsetWidth从最顶部到目前点击的位置的宽度(到父级的)			
			var gapX = document.documentElement.clientWidth - ul.offsetWidth;
			var Left = (ev.clientX > gapX )? gapX : ev.clientX;
			
//			scrollTop代表滚动条隐藏的高度
//			clientHeight可视高度
//			offsetHeight从最顶部到目前点击的位置的高度
			var gapY = (document.documentElement.scrollTop + document.documentElement.clientHeight - ul.offsetHeight);
			var Top = ev.offsetY > gapY ? gapY : ev.offsetY;
			
//			调试值
//			console.log('clientY '+ev.offsetY)
//			console.log(document.documentElement.scrollTop)
//			console.log(Left)
//			console.log(Top)
	
			ul.style.left = Left + 'px';
			ul.style.top = Top + 'px';
		}
		document.onclick = function (ev){
			ev = ev || window.event;
			ev.preventDefault?ev.preventDefault():ev.returnValue=false;
			ul.style.display = 'none';
		}
		

	</script>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值