| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1063 人关注过本帖
标题:[原创]右键菜单 [好久没来了 随便灌一水]
取消只看楼主 加入收藏
islet
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:89
帖 子:6548
专家分:0
注 册:2005-1-28
收藏
 问题点数:0 回复次数:0 
[原创]右键菜单 [好久没来了 随便灌一水]
程序代码:
/***************************************************/
/*******IE右键菜单 GreatBy Islet        ************/
/********* 作用域        targetElement    ************/
/********* 右键内容    Menus                ************/
/********* 对象变量名 varMenu            ************/
/***************************************************/
/*
    定义右键菜单内容 二维数组
    每个菜单的参数均为文本,依次为:[菜单显示文本,点击执行函数名及参数,不显示该菜单的校验(可写成函数,true为隐藏,false为显示,不隐藏直接给false即可)]
    最后一个菜单对象设成检验函数,给出隐藏整个菜单的条件,false为显示,true为隐藏
    menuArr = [['文本复制'],//复制菜单已经内置 安格式调用即可
        ['用户信息查询'            ,'OpenWin(10);'    ,'"表箱总表|楼道灯".indexOf(datagrid.rows.item(datagrid.selectedIndex).data[5])>-1'],
        ['分隔符'],            //分隔符已经内置 安格式调用即可
        ['修改表箱信息'            ,'OpenWin(1);'    ,'"表箱总表|楼道灯".indexOf(datagrid.rows.item(datagrid.selectedIndex).data[5])<0'],
        ['换表查询'                ,'OpenWin(11);'    ,false],    //始终显示该菜单
        "DisplayMenu()"        //验证是否隐藏菜单函数,true隐藏 false显示
        ];
    调用方法
    myrightdiv = new RightMenus(document.getElementById('sgcbDataGrid'),menuArr,"myrightdiv");
    //不要加var
*/
/********开始***********************************************************/
//写入菜单样式
document.write('<style type="text/css"><!--\
.RightMenu {    position:absolute;    left:187px;    top:48px;cursor:default;width:150;    z-index:1000;    border-top-width: 1px;    border-right-width: 2px;    border-bottom-width: 2px;    border-left-width: 1px;    border-top-style: solid;    border-right-style: solid;    border-bottom-style: solid;    border-left-style: solid;    border-top-color: #CCCCCC;    border-right-color: #666666;    border-bottom-color: #666666;    border-left-color: #CCCCCC;    padding:2;background-color: #FFFFFF;}\
.RightMenu button {font-size: 12px;line-height: 18px;color: #000000;background-color: #ffffff;border: none;width: 100%;text-align: left;padding-top: 0;padding-right: 7;padding-bottom: 0;padding-left: 7;margin-bottom: -2px;}\
--></style>')
function RightMenus(targetElement,Menus,varMenu){
    var Rinfo='';
    if(typeof(Menus)=="object"){
        for(var i=0;i<Menus.length-1;i++){
            if(Menus[i]=="分隔符") Rinfo +='<hr id="rmenu'+i+'" size="2">';
            else{
                if(Menus[i]=="文本复制") Menus[i] = ["复制","textCopy()","getSelectedText()==''"];
                Rinfo +='<button onClick="'+varMenu+'.RightMenuDisc();'+Menus[i][1]+';" \
onMouseOver="this.style.backgroundColor=\'#335EA8\'; this.style.color=\'#FFF\'" \
onMouseOut="this.style.backgroundColor=\'#FFF\'; this.style.color=\'#000\'" \
id="rmenu'+i+'">\
<font face="webdings">4</font> '+ Menus[i][0] +'\
</button>';
            }
        }
        var createDiv = document.createElement("div");
        document.body.insertBefore(createDiv,document.body.firstChild);
        createDiv.outerHTML='<div id="'+varMenu+'" class="RightMenu" style="display:none" onDblClick="'+varMenu+'.RightMenuDisc()">'+Rinfo+'</div>';
    }
    this.RightMenuPlay = function(){//CheckFuncfion
        var o=document.getElementById(varMenu);
        o.style.display="";
        bodyH    = document.body.clientHeight;
        oH        = o.clientHeight;
        bodyW    = document.body.clientWidth;
        oW        = o.clientWidth;
        y=event.clientY;
        x=event.clientX;
        if(bodyH-y-oH<0) y = y - oH + document.body.scrollTop;
        if(bodyW-x-oW<0) x = x - oW + document.body.scrollLeft;
        o.style.top        = y;
        o.style.left    = x;
    }
    this.RightMenuDisc = function(){
        var o=document.getElementById(varMenu);
        o.style.display="none"
    }
    this.RightMenuShow = function(){
        if(eval(Menus[Menus.length-1])) return;
        window.event.returnValue=false;
        var firstMenu=true;
        if(typeof(Menus)=="object"){
            for(var i=0;i<Menus.length-1;i++)
                if(typeof(Menus[i])=="object" && Menus[i]!="分隔符")
                    if(eval(Menus[i][2])) document.getElementById('rmenu'+i).style.display="none";
                    else{
                        firstMenu=false;
                        document.getElementById('rmenu'+i).style.display="";
                    }
                else
                    if(Menus[i]=="分隔符" && (i==Menus.length-2 || firstMenu)) document.getElementById('rmenu'+i).style.display="none";
                    else document.getElementById('rmenu'+i).style.display="";
        }
        eval(varMenu + ".RightMenuPlay()");
    }
    targetElement.oncontextmenu = this.RightMenuShow;
    if(document.onclick==null) document.onclick=this.RightMenuDisc;
    if(targetElement.onclick==null) targetElement.onclick=this.RightMenuDisc;
}
//实现文本复制
function textCopy(){
    document.execCommand("Copy"); //执行浏览器复制命令  
}
function getSelectedText() {  //获取被选择文字
    var    selected = '';
        var    sel    = document.selection;
        var    rng    = sel.createRange();
        rng.colapse;
        if((sel.type ==    "Text" || sel.type == "None") && rng !=    null){
            if(rng.text.length > 0)    selected = rng.text;
        }

    return selected;
}
/********结束***********************************************************/
收到的鲜花
  • lmhllr2008-01-19 00:19 送鲜花  1朵   附言:精品文章
搜索更多相关主题的帖子: 键菜单 Islet 变量 定义 
2008-01-17 18:44
快速回复:[原创]右键菜单 [好久没来了 随便灌一水]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026738 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved