Loading...
  所在位置:论坛首页 -> ┈┋电脑网络技术区┋┈ -> 网页制作技术 -> 使用xml构建Ext menu菜单
标题:使用xml构建Ext menu菜单收藏 编辑 删除 楼主 | 上一篇 下一篇
点点头
等级:社区游民
权限:普通用户
积分:11
金钱:3259
声望:17
经验:17
发帖数:740
注册:2007年1月16日
资料 短消息2008-4-23 9:56:34
废话就不多说了,将主要代码及效果图附上:
菜单效果:


代码如下:

var menuObj=[{
  text:"快捷",
  icon:'etc/default/images/icons/quick.gif'
    },'-'];
//下面两个函数用于解析xml为树结构输出
function createXMLMenu(xmlsrc) {
    var xmlDom=loadXML(xmlsrc);  //加载xml串或url,loadXML函数的定义见http://ajaxbbs.net/blog/post/268/
    var str=menuItemFromXML(xmlDom.documentElement||xmlDom);
    return str;
}
function menuItemFromXML(XmlEl) {
    var t=((XmlEl.nodeType==3)?XmlEl.nodeValue:XmlEl.tagName);
    if(t.replace(/\s/g,'').length==0){return null}
    var result = {  //构建菜单项
      text : t,  //菜单文本读取xml标记
      icon:'etc/default/images/icons/quick.gif'  //图标
    };
    
    if(XmlEl.nodeType==1){  //节点
        Ext.each(XmlEl.attributes,function(a){
            if(a.nodeName=="href"&&XmlEl.hasChildNodes()) return;    //目录不添加链接属性
            result[a.nodeName=="href"?"url":a.nodeName]=a.nodeValue;  //添加属性到当前菜单项中
        });

        Ext.each(XmlEl.childNodes,function(el){  //解析子节点,生成子菜单
            if((el.nodeType==1)||(el.nodeType ==3)){
                var c=menuItemFromXML(el);
                if(c){
      if(!result["menu"]){  //如果还没有子菜单,则添加menu属性
                    result["menu"]={
                          cls:"menu",
                          items:[c]  //将当前项加入到menu的items中
        }
                  }else{
                    result["menu"]["items"].push(c);  //否则直接添加到items中
                  }
             }
            }
        });
    }
    return result;
}
menuObj.push(createXMLMenu("etc/menu.xml"));  //将创建的菜单项添加到menuObj中
//继续添加其他菜单
menuObj=menuObj.concat(['-',{  
                text: '主页',
                handler:function(){window.open('http://192.168.3.1');},
                icon:'etc/default/images/icons/home.gif'
            },{
                text: '重新登陆',
                handler:function(){onrelogin();},
                icon:'etc/default/images/icons/work.gif'
            },{
                text: '更改密码',
                handler:function(){changePassword();},
                icon:'etc/default/images/icons/knowledge.gif'
            },{
                text: '退出',
                handler:function(){window.close();window.open('index.htm');},
                icon:'etc/default/images/icons/exit.gif'
            }
]);

//创建菜单面板
var menu = new Ext.menu.Menu({
  id: 'mainMenu',
  cls:"menu",
  items: menuObj
});

2008-4-23 9:56:34 顶部
第1页 共页 共0个回复     <<    >>    
 快速回复
  • 支持UBB,HTML标签

  • 高级回复

  • 操作选项:评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖
      首页 | 购买指南 | 商业版本 | 虚拟主机 | 特色介绍 | 下载中心 | 支付方式
    Copyright 2004-2008 BBSGood.com Powered By: BBSGood.Speed Version 5.0
      咨询电话:0575-85513832、0575-85513825(传真)、7*24小时咨询服务:13606552007 不良信息举报中心 浙ICP备05029817号
      业务QQ:38958768、客服QQ1:415896239、客服QQ2:343896043、MSN:jccsxx@hotmail.com