var _menu_frame=null;
var _array_menu=new Array();function prepareMenu(menu, menuItems){ function getMenu(menu){
_menu_frame=document.createElement("<table width=100 border=1 bordercolor=silver cellspacing=0 cellpadding=3 rules=all"+
" style=\"position:absolute; visibility:hidden; border:1 solid gray; border-collapse:collapse; font-size:9pt; cursor:hand; filter: blendTrans(duration=0.5); z-index: 10000\">"+
"</table>");
document.body.appendChild(_menu_frame);
_menu_frame.onmouseover=_menu_onmouseenter;
_menu_frame.onmouseout=_menu_onmouseout;
_menu_frame.onmouseup=_menu_onmouseup; var row=_menu_frame.insertRow();
row.attrib="menuitem";
var cell=row.insertCell();
cell.noWrap=true;
cell.style.paddingLeft="12px";
cell.style.paddingRight="12px";
_menu_frame.repeatrow=row.cloneNode(true);
} if (!menuItems) return; getMenu(menu);
var item=menuItems.firstUnit;
var row, cell;
var count=0;
while (item){
if (count>(_menu_frame.rows.length-1)){
row=_menu_frame.repeatrow.cloneNode(true);
_menu_frame.tBodies[0].insertAdjacentElement("beforeEnd", row);
}
else{
row=_menu_frame.rows[count];
} if (row.rowIndex % 2)
row.bgColor="#f0f9ff";
else
row.bgColor="#e0f0ff"; fireUserEvent(getElementEventName(menu, "onUpdateMenuItem"), [menu, item]); cell=row.cells[0];
cell.innerHTML=item.label;
row.item=item;
if (getIEVersion()<"5.5"){
cell.style.color=(item.disabled)?"gray":"";
}
else{
cell.disabled=item.disabled;
} count++;
item=item.nextUnit;
} _menu_frame.menu=menu;
_menu_frame.menuItems=menuItems;
}function isPopupMenuVisible(){
return (_menu_frame && _menu_frame.style.visibility=="visible");
}function showPopupMenu(menu, button){
var useFilter=true;
if (_menu_frame){
clearTimeout(_menu_frame.timeout_id);
if (_menu_frame.style.visibility=="visible"){
_hidePopupMenu();
useFilter=false;
}
}
menuItems=menu.menuItems;
menu.popup=(!button);
prepareMenu(menu, menuItems); if (button){
var pos=getAbsPosition(button, document.body); if (pos[0]+_menu_frame.offsetWidth>document.body.clientWidth-2)
_menu_frame.style.posLeft=pos[0]+button.offsetWidth-_menu_frame.offsetWidth-2;
else
_menu_frame.style.posLeft=pos[0]; if (pos[1]+button.offsetHeight+_menu_frame.offsetHeight>document.body.clientHeight-2)
_menu_frame.style.posTop=pos[1]-_menu_frame.offsetHeight-2;
else
_menu_frame.style.posTop=pos[1]+button.offsetHeight+1; _menu_frame.button=button;
button.menu_opened=true;
}
else{
var tmp_left, tmp_top;
if (event.x+_menu_frame.offsetWidth>document.body.clientWidth-2)
tmp_left=event.x-_menu_frame.offsetWidth+-5;
else
tmp_left=event.x-5; if (event.y+_menu_frame.offsetHeight>document.body.clientHeight-2)
tmp_top=event.y-_menu_frame.offsetHeight+-5;
else
tmp_top=event.y-5; _menu_frame.style.posLeft=tmp_left+document.body.scrollLeft;
_menu_frame.style.posTop=tmp_top+document.body.scrollTop;
} if (_menu_frame.filters.blendTrans.status!=2){
if (getIEVersion()<"5.5" || !useFilter){
_menu_frame.style.visibility="visible";
}
else{
_menu_frame.filters.blendTrans.apply();
_menu_frame.style.visibility="visible";
_menu_frame.filters.blendTrans.play();
}
}
window.event.returnValue =false 
window.event.cancelBubble =true 
}function _hidePopupMenu(){
if (!isPopupMenuVisible()) return; var button=_menu_frame.button;
if (button){
button.menu_opened=false;
_menu_frame.button=null;
} _menu_frame.removeNode(true);
_menu_frame.style.visibility="hidden";
_menu_frame=null;
}function hidePopupMenu(){
_menu_frame.timeout_id=setTimeout("_hidePopupMenu()" ,100);
}function _menu_onmouseenter() {
var menu=_menu_frame.menu;
var element=event.srcElement.parentElement;
var item=element.item; if (element.getAttribute("attrib")=="menuitem" && item && !item.disabled){
element.bgColor="#ffebcd";
} clearTimeout(_menu_frame.timeout_id);
}function _menu_onmouseout() {
var menu=_menu_frame.menu;
var element=event.srcElement.parentElement; if (element.getAttribute("attrib")=="menuitem"){
if (element.rowIndex % 2)
element.bgColor="#f0f9ff";
else
element.bgColor="#e0f0ff";
} if (!isChild(event.toElement, _menu_frame)) hidePopupMenu();
window.event.returnValue =false 
window.event.cancelBubble =true 
}function _menu_onmouseup() {
if (_menu_frame.filters.blendTrans.status==2) return; if (event.button!=2){
var menu=_menu_frame.menu;
var element=event.srcElement.parentElement;
var item=element.item; if (item && (!item.disabled) && element){
_hidePopupMenu();
if (element.getAttribute("attrib")=="menuitem"){
fireUserEvent(getElementEventName(menu, "onItemClick"), [menu, item]);
window.event.returnValue =false 
window.event.cancelBubble =true 
}
return;
}
}
_hidePopupMenu();
window.event.returnValue =false 
window.event.cancelBubble =true 
}

解决方案 »

  1.   

    上面菜单的主程序调用的时候如下//单击菜单项触发的事件
    /*********************************************
    菜单名称:menu_main
    作者:柯依策
    日期:2003.4.10
    **********************************************/
    function menu_main_onItemClick(menu, item){
    var selectNode=tree_prodef.selectNode

    if(!selectNode){
    return false;
    }
    switch(item.code){

    //添加流程类型
    case "01":{
    window.parent.frames(1).location.href="protypdetail.asp"
    break;
    }
    case "02":{
    window.location.href=window.location.href 
    break;
    }
    }

    }
      

  2.   

    <body onselectstart="return false">