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

ASP.Net 页面鼠标点击处出现自定义菜单 实现示例

2013年08月27日 ⁄ 综合 ⁄ 共 3643字 ⁄ 字号 评论关闭

声明:这里直接从项目代码块中抠出。不便地方,多包涵!有思路和方法指导是本文意图。

前端代码:

<asp:Image ID="imageSetting" runat="server" SkinID="ImageHand" EnableViewState="false" />
                    <div id="set1" runat="server" style="border-left: 1px solid #6593CF; border-top: 1px solid #6593CF;
                        background: #BAD8FF; border-bottom: 3px solid #6593CF; border-right: 3px solid #6593CF;
                        padding: 0px; display: none; z-index: 10; width: 75px; cursor: hand; position: absolute">
                        <table cellpadding="0" cellspacing="0" width="100%" border="0" style="font-size: 9pt;
                            line-height: 20px; background-color: #BAD8FF; padding: 2px;">
                            <tbody>
                                <tr>
                                    <td style="border-right: 1px solid #1B87D7">
                                        <asp:Image ID="imageMenu1" runat="server" />
                                    </td>
                                    <td id="tdSetting" runat="server" class="menu_normal" onmouseover="this.className='menu_over'"
                                        onmouseout="this.className='menu_normal'">
                                        <nobr><asp:Label ID="lblSetting" runat="server" Text="[设置]" ForeColor="Black"></asp:Label></nobr>
                                    </td>
                                </tr>
                                <tr>
                                    <td style="border-right: 1px solid #1B87D7;">
                                        <asp:Image ID="imageMenu2" runat="server" />
                                    </td>
                                    <td id="tdMoveUp" runat="server" class="menu_normal" onmouseover="this.className='menu_over'"
                                        onmouseout="this.className='menu_normal'">
                                        <nobr><asp:Label ID="lblMoveUp" runat="server" Text="[上移]" ForeColor="Black"></asp:Label></nobr>
                                    </td>
                                </tr>
                                <tr>
                                    <td style="border-right: 1px solid #1B87D7">
                                        <asp:Image ID="imageMenu3" runat="server" />
                                    </td>
                                    <td id="tdMoveDown" runat="server" class="menu_normal" onmouseover="this.className='menu_over'"
                                        onmouseout="this.className='menu_normal'">
                                        <nobr><asp:Label ID="lblMoveDown" runat="server" Text="[下移]" ForeColor="Black"></asp:Label></nobr>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>

前端Javascript代码:

//菜单
function OnContextMenu(set1ClientID, obj) {
    //window.event.returnValue = false;
    var set1 = document.getElementById(set1ClientID);

    var PY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
    var PX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;

    set1.style.display = '';
    if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
        set1.style.pixelTop = obj.offsetTop + PY;
        set1.style.pixelLeft = obj.offsetLeft + PX;        
    }
    else {
        set1.style.pixelTop = event.clientY + PY;
        set1.style.pixelLeft = event.clientX + PX;
    }
    if ((set1.offsetTop + set1.offsetHeight) > document.body.scrollTop + document.body.clientHeight) {
        set1.style.pixelTop = set1.offsetTop - (set1.offsetTop + set1.offsetHeight - (document.body.clientHeight + document.body.scrollTop));
    }
    return true;
}

//菜单链接指向
function OptClick(btnClientID) {
    if (document.all) {
        document.getElementById(btnClientID).click();
    }
    else {
        var evt = document.createEvent("MouseEvents");
        evt.initEvent("click", true, true);
        document.getElementById(btnClientID).dispatchEvent(evt);
    }
}

//hiden menu
document.onmousedown = function() {
    var objDiv = document.getElementsByTagName("div");
    for (var i = 0; i < objDiv.length; i++) {
        if (objDiv[i].id != null) {
            if (objDiv[i].id != "") {
                var str = objDiv[i].id.indexOf("_set1");
                if (str != -1) {
                    objDiv[i].style.display = 'none';
                }
            }
        }
    }
}

后端代码:只是个图片路径和js事件注册,你可以直接放在前段页面里。这里直接从项目扣除,没做简要整理O(∩_∩)O~。

imageSetting.ImageUrl = VariableHelper.ApplicationPath + "images/ico/set.gif";
            imageMenu1.ImageUrl = VariableHelper.ApplicationPath + "images/ico/setting.png";
            imageMenu2.ImageUrl = VariableHelper.ApplicationPath + "images/ico/arrow_up.png";
            imageMenu3.ImageUrl = VariableHelper.ApplicationPath + "images/ico/arrow_down.png";

            imageSetting.Attributes.Add("onclick", "OnContextMenu('" + set1.ClientID + "',this);");
            tdSetting.Attributes.Add("onmousedown", "OptClick('" + lnkOperator.ClientID + "')");
            tdMoveUp.Attributes.Add("onmousedown", "OptClick('" + btnMoveUp.ClientID + "')");
            tdMoveDown.Attributes.Add("onmousedown", "OptClick('" + btnMoveDown.ClientID + "')");

 

----------------------------------------------------------------------------------------------------------------------------------

希望对您有所帮助!

2013年10月07日

Kevin.Chen(二爷)  苏州.太仓

O(∩_∩)O~

 

抱歉!评论已关闭.