现在的位置: 首页 > 综合 > 正文

JavaScript实现右键菜单(二)

2013年10月11日 ⁄ 综合 ⁄ 共 3966字 ⁄ 字号 评论关闭

BSRightItem

/**
 * <p>标题: BSRightItem</p>
 * <p>功能描述: 右键菜单项。</p>
 * <p>作者: BinaryStar原创B/S框架</p>
 * <p>版本: 0.1</p>
 * <p>创建日期: 2005-12-21</p>
 */

 

function BSRightItem(pid, areaIndex, areaId,  pIndex, index, text, jsfun, img, disabled){
  
this.pid = pid||"BSRightMenu_1";//BS右键菜单对象ID
  this.areaIndex = areaIndex;//右键块索引
  this.areaId = areaId||"";//BS右键菜单块ID
  this.pIndex = pIndex;//父菜单项索引

  
this.level = 0;//树的深度
  this.index = index;//本菜单项索引
  this.id = this.areaId + "_item_" + this.index;//ID
  this.text = text || "BS菜单项";//菜单项文字
  this.jsfun = jsfun;//菜单项js函数
  this.img = img||"";//菜单项图片
  this.childList = new Array();//该菜单项包含的子菜单项
  this.isSperator = false;//是否是分隔符
  this.thisItemIndex = -1;//当前鼠标所在的子菜单项索引。
  this.disabled = disabled || false;//该菜单项是否可用
  this.childIsShow = false;//孩子菜单正在展现
  this.key = "";//右键菜单项的key;
  this.body = null;//该菜单项的对象;
  this.isError = false;//该节点点击出错


  
this.setDisabled = function (flag){
    
if (flag){
      
this.disabled = true;
    }

    
else{
      
this.disabled = false;
    }

  }


  
//添加子菜单项
  this.addItem = function (text, jsfun, img, disabled){
   
var rmObj = eval(this.pid);
 
return rmObj.itemAreaList[this.areaIndex].addItem(this.index, text, jsfun, img, disabled);
  }


  
//菜单项的展现
  this.show = function(){
   
var rmObj = eval(this.pid);
    
var htmlStr = "";
   
var pName = rmObj.getRMName(this.level);
    htmlStr 
+= "<tr id=""+this.id+"_tr" style=""+bs_rm_out+""";
    htmlStr 
+= " onmouseover=""+pName+".itemAreaList["+this.areaIndex+"].itemList["+this.index+"].doOnmouseover(event, this)"";
    htmlStr 
+= " onmouseout=""+pName+".itemAreaList["+this.areaIndex+"].itemList["+this.index+"].doOnmouseout(event, this)"";
    
if (!this.isSperator && !this.disabled){
      htmlStr 
+= " onmouseup=""+pName+".itemAreaList["+this.areaIndex+"].itemList["+this.index+"].doOnmouseup(event, this)"";
      htmlStr 
+= " onmousedown=""+pName+".itemAreaList["+this.areaIndex+"].itemList["+this.index+"].doOnmousedown(event, this)"";
    }

    
else{
      htmlStr 
+= " onmouseup="event.cancelBubble=true;return false;"";
      htmlStr 
+= " onmousedown="event.cancelBubble=true;return false;"";
    }

    htmlStr 
+= " onclick=window.event.cancelBubble=true;return false;";
    htmlStr 
+= ">";
    
//图片
    if (!this.isSperator){
      htmlStr 
+= "<td align="right" ";
      
if (this.img.Trim() != ""){
        htmlStr 
+= "style="width:22px;height:22px;";
        htmlStr 
+= "background: url("+rmObj.imagePath+this.img+");";
        htmlStr 
+= "background-repeat: no-repeat;";
        htmlStr 
+= "background-attachment: no-fixed;";
        htmlStr 
+= "background-position: right;"";
        htmlStr 
+= " valign="middle">&nbsp;&nbsp;&nbsp;</td>";
      }

      
else{
        htmlStr 
+= "style="width:2px;height:22px;";
        htmlStr 
+= " valign="middle">&nbsp;</td>";
      }

      
//文字
      var tempText = this.text;
      
var isLong = false;
      
var cn = 0;
      
if (tempText.match(/[^ -~]/g) != null){
       cn 
= tempText.match(/[^ -~]/g).length;
      }


      
if ((tempText.length-cn)+cn*2 >= 18){
       
if (cn <= 3){
        tempText 
= tempText.substring(018)+"...";
       }

       
else {
        tempText 
= tempText.substring(010)+"...";
       }

       isLong 
= true;
      }

      htmlStr 
+= "<td valign="middle" onmouseover="function(){return false;}"";
      
if (isLong){
       htmlStr 
+= " title=""+this.text+""";
      }

      
if (this.disabled){
        htmlStr 
+= " style="color:Gray;white-space:nowrap;word-break:word-break ;"";
      }

      htmlStr 
+= "><nobr onmouseover="function(){return false;}">"+tempText+"&nbsp;&nbsp;</nobr></td>";
      
//存在孩子时显示箭头。
      htmlStr += "<td style='font-family: webdings;'>";
      
if (this.childList.length > 0){
        htmlStr 
+= "4";
      }

        htmlStr 
+= "</td>";
    }

    
else{
      
//分隔符
      htmlStr += "<td colspan="3" height="5"><hr style=""+bs_rm_sperator+""/></td>";
    }

    htmlStr 
+= "</tr>";
    
return htmlStr;
  }


  
//设置图片的背景色
  this.setImgSelect = function(elmObj, flag){
   
//文字背景
   if (!

抱歉!评论已关闭.