用Javascript实现Agent(实现右键菜单)(2)

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 changzheng 的 blog

用javascript实现agent(实现右键菜单)

既然是显示右键菜单,那么我们就要截获对精灵按右键时的事件oncontextmenu

然后将右键菜单的html封装到一个函数,一上来这个菜单层是隐藏的

function getmenuhtml()
{
 var menuhtml ="<div id=menu style=\"text-align: left;position: absolute; visibility: hidden; width: 85px; z-index: 200;padding:1px\">";
 menuhtml += "<table border=1 width=100 height=100>";
 menuhtml += "<tr>";
 menuhtml += "<td>";
 menuhtml += "menu1";
 menuhtml += "</td>";
 menuhtml += "</tr>";
 menuhtml += "</table>";
 menuhtml += "</div>";
 return menuhtml;
}

实现右键菜单,我们需要精灵截获oncontextmenu事件,需要对昨天的run函数进行一点小的修改

agent.prototype.run=function()
{
 var agenthtml = "";
 agenthtml += "<img src="+this.imgagent;
 agenthtml += " id=\"agent1\"";
 agenthtml += " style=\"position:absolute;left:"+this.agentleft+";top:"+this.agenttop+";cursor:move\"";
 agenthtml += " onselectstart=\"return false\"";
 agenthtml += " onmousedown=\"mousedown(this)\"";
 agenthtml += " onmouseup=\"mouseup()\"";
 agenthtml += " onmousemove=\"mousemove()\"";
 agenthtml += " oncontextmenu=\"return showrightmenu()\"";
 agenthtml += ">";
 agenthtml += getmenuhtml();
 return document.write(agenthtml);
}

可以看出oncontextmenu调用的是showrightmenu函数,这个函数使菜单层可见,并且显示位置随着鼠标的位置而显示

注解:

scrollleft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrolltop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
event.clientx:鼠标点击的x轴位置
event.clienty:鼠标点击的y轴位置

/*
* 右键菜单 v1.0
* author: 清风
*/
function showrightmenu()
{
 menu.style.left=document.body.scrollleft+event.clientx
 menu.style.top=document.body.scrolltop+event.clienty
 menu.style.visibility="visible";
 return false;
}

菜单现在可以显示了,如何使其消失呢?应当是用户点击任意位置就可消失

document.onclick=click
function click()
{
 menu.style.visibility="hidden";
}

今天的效果如下:

明天美化一下菜单,实现动态添加菜单内容

本文关键:用Javascript实现Agent(实现右键菜单)(2)
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top