国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript實現在某個元素上阻止鼠標右鍵事件的方法和實例

2019-11-20 14:16:54
字體:
來源:轉載
供稿:網友

最近在做一個小東西的時候需要在某一個元素上“右擊”觸發一個自定義菜單,通過自定義的菜單對右擊的條目進行編輯。這就要求屏蔽默認的右鍵菜單

IE和FF下面的元素都有oncontextmenu這個方法,在FF下面只要通過event.preventDefault()方法就可以輕松實現這個效果。IE并不支持這個方法,在IE下面一般是通過觸發方法后return false來實現阻止默認事件的。

通常我們使用阻止右鍵事件是在全局阻止,即在document層面就將右鍵攔截,現在我想要實現的效果是只在特定的區域阻止默認的右鍵事件,而其他區域并不影響。

通過實驗我發現要是在IE下綁定的方法中return false后在document層面上可以實現阻止右鍵的默認行為。但是具體到某一個元素比如div,則失效。

最后通過查找手冊發現,IE下的event對象有一個returnValue屬性,如果將這個屬性設置為false則不會觸發默認的右鍵事件。類似如下:

復制代碼 代碼如下:

event.returnValue = false;

只要加入這句就實現了我想要的效果。完整Demo代碼:

<!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=utf-8" /><title>在某個元素上阻止鼠標右鍵默認事件DEMO</title><style>body{font-size:12px; line-height:24px; font-family:Arial, Helvetica, sans-serif;}#activeArea{width:300px;height:200px; background:#06C; color:#fff;}#cstCM{ width:120px; background:#eee; border:1px solid #ccc; position:absolute; }#cstCM ul{margin:0; padding:0;}#cstCM ul li{ list-style:none;padding:0 10px; cursor:default;}#cstCM ul li:hover{ background:#009; color:#fff;}.splitTop{ border-bottom:1px solid #ccc;}.splitBottom{border-top:1px solid #fff;}</style><script>function customContextMenu(event){	event.preventDefault ? event.preventDefault():(event.returnValue = false);	var cstCM = document.getElementById('cstCM');	cstCM.style.left = event.clientX + 'px';	cstCM.style.top = event.clientY + 'px';	cstCM.style.display = 'block';	document.onmousedown = clearCustomCM;}function clearCustomCM(){	document.getElementById('cstCM').style.display = 'none';	document.onmousedown = null;}</script></head><body><div id="cstCM" style="display:none;">	<ul>		<li>View</li>		<li>Sort By</li>		<li class="splitTop">Refresh</li>		<li class="splitBottom">Paste</li>		<li class="splitTop">Paste Shortcut</li>		<li class="splitBottom">Property</li>	</ul></div><div id="activeArea" oncontextmenu = "customContextMenu(event)">	Custom Context Menu Area</div></body></html>

這個效果兼容IE6+,FF,但是opera壓根就沒有oncontextmenu這個方法所以也就不能簡單的通過這個方法實現,要想實現還需要通過其他的手段。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 克东县| 上杭县| 兴宁市| 盐源县| 林西县| 永嘉县| 富裕县| 平南县| 庄河市| 长宁县| 卢龙县| 铜陵市| 项城市| 长葛市| 定陶县| 渝北区| 冕宁县| 杭锦后旗| 凤阳县| 顺昌县| 铅山县| 枣强县| 隆安县| 偏关县| 惠东县| 玛曲县| 巴林右旗| 苍梧县| 庆云县| 隆昌县| 佛坪县| 南宫市| 开化县| 泰顺县| 噶尔县| 璧山县| 汝南县| 三原县| 丹东市| 石楼县| 垣曲县|