Javascript實現(xiàn)鼠標(biāo)右鍵特色菜單
更新時間:2015年08月04日 09:53:35 投稿:lijiao
鼠標(biāo)右鍵大家都經(jīng)常操作,但是鼠標(biāo)的內(nèi)容是不是符合大家的“口味”?這篇文章就是教大家如何定制自己專屬鼠標(biāo)右鍵,需要的朋友可以參考下
在Web端,通常是不需要右鍵菜單,各個瀏覽器也有自己的右鍵菜單。但是對于一些特殊的網(wǎng)頁,是需要右鍵菜單來增加用戶體驗的,比如百度音樂,QQ郵箱,相信大家都在Web端使用過右鍵菜單了,現(xiàn)在來分享一下如何實現(xiàn),比較簡單。
運行代碼:
window.onload = function() {
document.oncontextmenu = block;
document.body.onmouseup = function(event) {
if (!event) event = window.event;
if (event.button == 2) {
var x = event.pageX || event.clientX;
var y = event.pageY || event.clientY;
document.getElementById("contextMenu").style.left = x "px";
document.getElementById("contextMenu").style.top = y "px";
document.getElementById("contextMenu").style.display = "block";
}
}
//阻止事件冒泡
document.getElementById("contextMenu").onclick = function(event) {
event.stopPropagation();
}
//點擊其他地方隱藏
document.onclick = function() {
document.getElementById("contextMenu").style.display = "none";
}
for (var i = 0; i < getElementsByClassName("contextMenuItem").length; i ) {
getElementsByClassName("contextMenuItem")[i].onclick = function(event) {
event = event ? event : window.event
var target = event.srcElement ? event.srcElement : event.targe;
document.getElementById("contextMenu").style.display = "none";
//alert("您點擊了: " target.innerHTML);
}
}
}
function block(event) {
if (window.event) {
event = window.event;
event.returnValue = false;
} else event.preventDefault();
}
//兼容IE不支持getElementsByClassName
function getElementsByClassName(className, root, tagName) {
if (root) {
root = typeof root == "string" ? document.getElementById(root) : root;
} else {
root = document.body;
}
tagName = tagName || "*";
if (document.getElementsByClassName) {
return root.getElementsByClassName(className);
} else {
var tag = root.getElementsByTagName(tagName);
var tagAll = [];
for (var i = 0; i < tag.length; i ) {
for (var j = 0, n = tag[i].className.split(' '); j < n.length; j ) {
if (n[j] == className) {
tagAll.push(tag[i]);
break;
}
}
}
return tagAll;
}
}
效果圖:

以上就是本文的全部內(nèi)容,希望大家可以喜歡。
相關(guān)文章
js事件on動態(tài)綁定數(shù)據(jù),綁定多個事件的方法
今天小編就為大家分享一篇js事件on動態(tài)綁定數(shù)據(jù),綁定多個事件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
如何用JavaScript動態(tài)呼叫函數(shù)(兩種方式)
下面介紹一下動態(tài)呼叫函數(shù)目前應(yīng)該有下面兩種方式,它們之間的使用及對比,感興趣的朋友可以研究下,希望可以幫助到你2013-05-05
JavaScript函數(shù)式編程實現(xiàn)介紹
函數(shù)式編程是一種編程范式,將整個程序都由函數(shù)調(diào)用以及函數(shù)組合構(gòu)成。 可以看成一條流水線,數(shù)據(jù)可以不斷地從一個函數(shù)的輸出流入另一個函數(shù)的輸入,最后輸出結(jié)果2022-09-09
Bootstrap實現(xiàn)省市區(qū)三級聯(lián)動(親測可用)
這篇文章主要為大家詳細(xì)介紹了Bootstrap實現(xiàn)省市區(qū)三級聯(lián)動,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07
十個開發(fā)人員面臨的最常見的JavaScript問題總結(jié)
今天,JavaScript?是幾乎所有現(xiàn)代?Web?應(yīng)用的核心。這就是為什么JavaScript問題,以及找到導(dǎo)致這些問題的錯誤,是?Web?發(fā)者的首要任務(wù)。本文總結(jié)了十個常見的問題及解決方法,需要的可以參考一下2022-11-11

