天天看點

html右鍵菜單使用多嗎,HTML中實作右鍵菜單功能

文章來源:http://www.souzz.net/html/web/htmlcss/9665.html

HTML中實作右鍵菜單功能

我們使用的應用系統很多都有右鍵菜單功能。但是在網頁上面,點選右鍵一般顯示的卻是IE預設的右鍵菜單,那麼我們如何實作自己的右鍵菜單呢?下面将講解右鍵菜單功能的實作原理和實作代碼。

實作原理

在HTML語言中,基本上每個對象都有一個oncontextmenu事件,這個事件就是滑鼠的右鍵單擊事件(onclick事件是滑鼠的左鍵單擊事件),那麼我們就可以在滑鼠右擊的時候,讓系統彈出一個視窗(這個是popup視窗,顯示在IE的最前面,沒有菜單),上面顯示我們想要顯示的菜單資訊,當我們單擊其中某一項的時候,就執行我們設定的動作,然後将彈出視窗關閉。

實作代碼

下面我寫了一個示例代碼,模拟一個樹型菜單,當我們右鍵點選樹型菜單某一項的時候,就會彈出右鍵菜單,裡面有“新增”、“修改”、“删除”三個菜單項,單擊某項會執行相應的操作。如果是在頁面的其它地方點選右鍵的話,就隻顯示“新增”一個菜單項。下面的代碼内容:

contextmenuDemo.html檔案

―――――――――――――――――――――――――――――――――

--%>

根目錄
菜單一
菜單二
新增
修改
删除

function showMenu(id)

{

menuForm.id.value = id;

if("" == id)

{

popMenu(itemMenu,100,"100");

}

else

{

popMenu(itemMenu,100,"111");

}

event.returnValue=false;

event.cancelBubble=true;

return false;

}

function popMenu(menuDiv,width,rowControlString)

{

//建立彈出菜單

var pop=window.createPopup();

//設定彈出菜單的内容

pop.document.body.innerHTML=menuDiv.innerHTML;

var rowObjs=pop.document.body.all[0].rows;

//獲得彈出菜單的行數

var rowCount=rowObjs.length;

//循環設定每行的屬性

for(var i=0;i

{

//如果設定該行不顯示,則行數減一

var hide=rowControlString.charAt(i)!='1';

if(hide){

rowCount--;

}

//設定是否顯示該行

rowObjs[i].style.display=(hide)?"none":"";

//設定滑鼠滑入該行時的效果

rowObjs[i].cells[0].οnmοuseοver=function()

{

this.style.background="#818181";

this.style.color="white";

}

//設定滑鼠滑出該行時的效果

rowObjs[i].cells[0].οnmοuseοut=function(){

this.style.background="#cccccc";

this.style.color="black";

}

}

//屏蔽菜單的菜單

pop.document.οncοntextmenu=function()

{

return false;

}

//選擇右鍵菜單的一項後,菜單隐藏

pop.document.οnclick=function()

{

pop.hide();

}

//顯示菜單

pop.show(event.clientX-1,event.clientY,width,rowCount*25,document.body);

return true;

}

function create()

{

alert("create" + menuForm.id.value + "!");

}

function update()

{

alert("update" + menuForm.id.value + "!");

}

function del()

{

alert("delete" + menuForm.id.value + "!");

}

function clickMenu()

{

alert("you click a menu!");

}