Javascript實(shí)現(xiàn)的簡(jiǎn)單右鍵菜單類
本文實(shí)例講述了Javascript實(shí)現(xiàn)的簡(jiǎn)單右鍵菜單類。分享給大家供大家參考。具體如下:
這是自己寫的一個(gè)右鍵菜單類,屏蔽掉了IE固有的右鍵菜單,一共有四個(gè)參數(shù):第一個(gè)是出發(fā)顯示右鍵菜單的div的id
第二個(gè)是右鍵菜單這個(gè)層的id,根據(jù)這個(gè)id去創(chuàng)建一個(gè)新的層,menuList是菜單項(xiàng)的列表,對(duì)應(yīng)了點(diǎn)擊一個(gè)菜單項(xiàng)后觸發(fā)的函數(shù),classList是菜單的class名稱,以及菜單項(xiàng)對(duì)應(yīng)的class名稱,包含了鼠標(biāo)滑過時(shí)的class。
運(yùn)行效果截圖如下:

在線演示地址如下:
http://demo.jb51.net/js/2015/js-right-button-menu-class-codes/
具體代碼如下:
<!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">
.cmenu
{
position:absolute;
top:100px;
left:100px;
width:200px;
height:200px;
background-color:white;
border:1px solid pink;
}
.liAble
{
font-family:"宋體";
color:#6699CC;
margin-left:10px;
margin-top:5px;
list-style-type:none;
cursor:default;
}
.liMouseOver
{
margin-left:10px;
margin-top:5px;
background-color:#CCFFFF;
list-style-type:none;
cursor:default;
}
</style>
</head>
<body>
<div style="margin-left:auto; margin-right:auto; height:300px; width:60%;background-color:#CC6699" id="x">
</div>
<input type="hidden" id="value1" value="4" />
<input type="hidden" id="value2" value="5" />
<script type="text/javascript">
//右鍵菜單類
function RightHandMenu(div,menuDiv,menuList,classList)
{
var oThis = this;
this._menuList =
{
}
this._classList =
{
objClass:'',
MenuClass:'',
liAbleClass:'',
liMouseOverClass:''
}
this.Init = function()
{
this._obj = $(div);
this._obj.oncontextmenu = function(e){oThis.ShowMenu(e)};
this._obj.className = this._classList.objClass;
document.onclick = function(){oThis.HiddenMenu()};
objToObj(this._classList, classList);
objToObj(this._menuList, menuList);
}
this.CreateMenu = function()
{
if($(menuDiv))
{
alert("該ID已被占用");
return;
}
this._menu = document.createElement("DIV");
this._menu.id = menuDiv;
this._menu.oncontextmenu = function(e){stopBubble(e)};
this._menu.className = this._classList.MenuClass;
this._menu.style.display = "none";
document.body.appendChild(this._menu);
}
this.CreateMenuList = function()
{
for(var pro in this._menuList)
{
var li = document.createElement("LI");
li.innerHTML = pro;
this._menu.appendChild(li);
li.className = this._classList.liAbleClass;
li.onclick = this._menuList[pro];
li.onmouseover = function(){oThis.ChangeLiClass(this,oThis._classList.liMouseOverClass)}
li.onmouseout = function(){oThis.ChangeLiClass(this,oThis._classList.liAbleClass)}
}
}
this.ChangeLiClass = function(obj,name)
{
obj.className = name
}
this.ShowMenu = function(e)
{
var e = e || window.event;
stopBubble(e);
var offsetX = e.clientX;
var offsetY = e.clientY;
with(this._menu.style)
{
display = "block";
top = offsetY + "px";
left = offsetX + "px";
}
}
this.HiddenMenu = function()
{
this._menu.style.display = "none";
}
this.Init();
this.CreateMenu();
this.CreateMenuList();
}
function stopBubble(oEvent)
{
if(oEvent.stopPropagation) oEvent.stopPropagation();
else oEvent.cancelBubble = true;
if(oEvent.preventDefault) oEvent.preventDefault();
else oEvent.returnValue = false;
}
function $(div)
{
return 'string' == typeof div ? document.getElementById(div) : div;
}
function objToObj(destination,source)
{
for(var pro in source)
{
destination[pro] = source[pro];
}
return destination;
}
//構(gòu)造右鍵菜單
function Edit()
{
alert("edit");
}
function Delete()
{
alert("delete");
}
var menuList =
{
編輯:Edit,
刪除:Delete
}
var classList =
{
MenuClass:'cmenu',
liAbleClass:'liAble',
liMouseOverClass:'liMouseOver'
}
var x = new RightHandMenu("x","testDiv",menuList,classList)
</script>
</body>
</html>
希望本文所述對(duì)大家的JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
簡(jiǎn)單實(shí)現(xiàn)輪播圖效果的實(shí)例
下面小編就為大家?guī)硪黄?jiǎn)單實(shí)現(xiàn)輪播圖效果的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07
JavaScript+html5 canvas繪制漸變區(qū)域完整實(shí)例
這篇文章主要介紹了JavaScript+html5 canvas繪制漸變區(qū)域的方法,結(jié)合完整實(shí)例形式分析了canvas顏色調(diào)用與圖形繪制的相關(guān)技巧,需要的朋友可以參考下2016-01-01
js動(dòng)態(tài)移動(dòng)滾動(dòng)條至底部示例代碼
這篇文章主要介紹了使用js動(dòng)態(tài)移動(dòng)滾動(dòng)條至底部,需要的朋友可以參考下2014-04-04
JavaScript微信定位功能實(shí)現(xiàn)方法
這篇文章主要介紹了JavaScript微信定位功能實(shí)現(xiàn)方法,將定位到的經(jīng)緯度轉(zhuǎn)換為百度地圖對(duì)應(yīng)的經(jīng)緯度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
JS正則匹配URL網(wǎng)址的方法(可匹配www,http開頭的一切網(wǎng)址)
這篇文章主要介紹了JS正則匹配URL網(wǎng)址的方法,可實(shí)現(xiàn)匹配www,http開頭的一切網(wǎng)址的功能,涉及JS正則匹配字符串、數(shù)字及特殊字符構(gòu)建URL的操作技巧,需要的朋友可以參考下2017-01-01
OpenCV.js實(shí)現(xiàn)喬丹動(dòng)圖素描效果圖文教程
這篇文章主要為大家介紹了OpenCV.js實(shí)現(xiàn)喬丹動(dòng)圖素描效果的圖文教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
詳解JavaScript數(shù)據(jù)類型和判斷方法
這篇文章主要介紹了JavaScript數(shù)據(jù)類型和判斷方法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下2020-09-09

