var menuOffX=0 //菜单距连接文字最左端距离
var menuOffY=20 //菜单距连接文字顶端距离var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById&&!document.all/**
 * e  ------ window.event
 * vmenu --- 菜单中显示内容
 * mod ----- 是否调整纵坐标位置
 */
function showmenu(e,vmenu,mod){
which=vmenu // 保存菜单对象中的内容,这个应该是在其它地方生成的. menuobj=document.getElementById("popmenu") //取得弹出菜单对象
menuobj.thestyle=menuobj.style //以下为保存弹出菜单的信息
menuobj.innerHTML=which
menuobj.contentwidth=menuobj.offsetWidth //计算菜单的高度并保存
eventX=e.clientX
eventY=e.clientY

var rightedge=document.body.clientWidth-eventX //计算菜单左边缘到浏览器窗口右边缘的距离
var bottomedge=document.body.clientHeight-eventY    //计算菜单上边缘到浏览器窗口下边缘的距离

if (rightedge < menuobj.contentwidth) // 判断菜单到浏览器窗口右边距离是否小于菜单宽度,
// 即菜单是否会显示到窗口之外,被浏览器窗口遮盖 
 // 如果宽度不够,调整菜单横坐标
menuobj.thestyle.left=document.body.scrollLeft+eventX-menuobj.contentwidth+menuOffX  
else
// 如果宽度足够,根据不同的浏览器纵坐标
// 下面的写法比较简练,从可读性方面的考虑,一般都会推荐使用if..else语句来做.
menuobj.thestyle.left=ie4? ie_x(event.srcElement)+menuOffX : ns6? window.pageXOffset+eventX : eventX

if (bottomedge < menuobj.contentheight&&mod!=0) // 判断到窗口下侧的距离是否小于菜单的高度
// 以及是否需要调查菜单的纵坐标 // 调整菜单纵坐标
menuobj.thestyle.top=document.body.scrollTop+eventY-menuobj.contentheight-event.offsetY+menuOffY-23
else
// 
menuobj.thestyle.top=ie4? ie_y(event.srcElement)+menuOffY : ns6? window.pageYOffset+eventY+10 : eventY

menuobj.thestyle.visibility="visible" // 显示菜单