zoukankan      html  css  js  c++  java
  • 鼠标右击事件

    本程序由一个js文件和aspx文件组成,没有后台CS代码。

    js代码如下:

        <script type="text/javascript">
        //禁用右键菜单
        document.oncontextmenu=ContextMenu;
        //鼠标右击事件
        function ContextMenu()
        {
           //创建两个变量,作为菜单出现的坐标
           var x;
           var y;
           //获取菜单外部Div(下面简称面板)
           var FramePanel=document.getElementById("FrameDiv");
           //获取面板宽度和高度
           var PanelWidth=parseInt(FramePanel.style.width.replace("px",""));
           var PanelHeight=parseInt(FramePanel.style.height.replace("px",""));
           //获取鼠标坐标
           var MouseX=event.clientX;
           var MouseY=event.clientY;
           //获取网页窗口宽度和高度
           var WindowWidth=document.body.offsetWidth;
           var WindowHeight=document.documentElement.offsetHeight;
          
           //如果鼠标X坐标+面板宽度>网页窗口宽度,则面板左边显示
           if((MouseX+PanelWidth)>=WindowWidth)
           {
                x=MouseX-PanelWidth-20;
           }
           else
           {
                x=MouseX;
           }
            //如果鼠标Y坐标+面板高度>网页窗口高度,则面板上边显示
           if((MouseY+PanelHeight)>=WindowHeight)
           {
                y=MouseY-PanelHeight-20;
           }
           else
           {
                y=MouseY;
           }
     
           //显示面板
           FramePanel.style.left=x;
           FramePanel.style.top=y;
           FramePanel.style.display="block";
          
           //隐藏二级菜单
           document.getElementById("ChildDiv").style.display="none";
          
           return false;//这句代码即等于event.returnValue=false;
        }
       
        //鼠标选择该菜单,参数说明:arg为该菜单Div,imageUrl指要替换的image地址,hasChildMenu指该菜单是否有子菜单,childPanelId指子菜单ID(如果有子菜单的话)
        function MenuOnMouseOver(arg,imageUrl,hasChildMenu,childPanelId)
        {
            //替换背景图片(图片路径为相对路径)
            arg.style.backgroundImage="url('"+imageUrl+"')";
            //改变div背景颜色
            arg.style.backgroundColor="#1665CB";
            //改变字体颜色
            arg.style.color="#ffffff";
           
            //如果该菜单下有子菜单
            if(hasChildMenu)
            {
               //创建两个变量,作为菜单出现的坐标
               var x;
               var y;
               //获取子菜单Div(下面简称子面板)
               var ChildPanel=document.getElementById(childPanelId);
               //debugger;
               //获取子面板宽度和高度
               var ChildPanelWidth=parseInt(ChildPanel.style.width.replace("px",""));
               var ChildPanelHeight=parseInt(ChildPanel.style.width.replace("px",""));
               //获取父亲菜单Div(下面简称父面板)
               var FramePanel=event.srcElement;
               //获取父面板宽度和高度
               var PanelWidth=FramePanel.offsetWidth;
               var PanelHeight=FramePanel.offsetHeight;
               //获取鼠标坐标
               var MouseX=event.clientX;
               var MouseY=event.clientY;
               //获取鼠标在父面板的偏移位置
               var MouseOffsetWidth=event.offsetX;
               var MouseOffsetHeight=event.offsetY;
               //获取网页窗口宽度和高度
               var WindowWidth=document.body.offsetWidth;
               var WindowHeight=document.documentElement.offsetHeight;
               //如果鼠标X坐标+面板宽度+子面板宽度>网页窗口宽度,则面板左边显示
               if((MouseX-MouseOffsetWidth+PanelWidth+ChildPanelWidth)>=WindowWidth)
               {
                    x=MouseX-MouseOffsetWidth-ChildPanelWidth-3;
               }
               else
               {
                    x=MouseX-MouseOffsetWidth+PanelWidth-5;
               }
                //如果鼠标Y坐标+面板高度>网页窗口高度,则面板上边显示
               if((MouseY-MouseOffsetHeight+ChildPanelHeight)>=WindowHeight-30)
               {
                    y=MouseY-MouseOffsetHeight-ChildPanelHeight-15;
               }
               else
               {
                    y=MouseY-MouseOffsetHeight+5;
               }
              
               //显示面板
               ChildPanel.style.left=x;
               ChildPanel.style.top=y;
               ChildPanel.style.display="block";
            }
          
        }
       
        //鼠标离开该菜单
        function MenuOnMouseOut(arg,imageUrl,hasChildMenu,childPanelId)
        {
            if(hasChildMenu)
            {
                //子菜单div(以下简称子面板)
                var ChildPanel=document.getElementById(childPanelId);
                var ToElement=event.toElement;
                //这里要注意,鼠标有可能移动到子面板的子孙div中,此时event.ToElement的DOM元素!=ChildPanel(子面板),event.ToElement.parentNode=ChildPanel,
                if(ToElement==ChildPanel||ToElement.parentNode==ChildPanel)
                {
                    ChildPanel.style.display="block";
                }
                else
                {
                    ChildPanel.style.display="none";
                }
            }
            //替换背景图片(图片路径为相对路径)
            arg.style.backgroundImage="url('"+imageUrl+"')";
            //改变div背景颜色
            arg.style.backgroundColor="#ffffff";
            //改变字体颜色
            arg.style.color="#000000";
        }
       
    </script>
      

    页面ASPX代码如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ContextMenu.aspx.cs" Inherits="ContextMenu" %>

    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <link href="Css/StyleSheet.css" rel="Stylesheet" type="text/css"/>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
        <!--上下文菜单一级菜单-->
        <div id="FrameDiv" runat="server" style="170px; height:300px; border-style:solid;border-1px; border-color:#A09F9F; background-color:White; display:none; position:relative; padding:1px 1px 1px 1px;">
            <!--文件常用菜单-->
            <div class="MenuDivDefault" onmouseover="MenuOnMouseOver(this,'Images/menu1_click.jpg')" onmouseout="MenuOnMouseOut(this,'Images/menu1.jpg')" style="background-image:url('Images/menu1.jpg')" onclick="OnCopyFolderMenuClcik()">
                创建新文件夹
            </div>
            <div class="MenuDivDefault" onmouseover="MenuOnMouseOver(this,'Images/menu2_click.jpg')" onmouseout="MenuOnMouseOut(this,'Images/menu2.jpg')" style="background-image:url('Images/menu2.jpg')">
               搜索新文件夹
            </div>
            <div class="MenuDivDefault" onmouseover="MenuOnMouseOver(this,'Images/menu3_click.jpg')" onmouseout="MenuOnMouseOut(this,'Images/menu3.jpg')" style="background-image:url('Images/menu3.jpg')">
                删除该文件夹
            </div>
            <div class="MenuDivDefault" onmouseover="MenuOnMouseOver(this,'Images/menu4_click.jpg')" onmouseout="MenuOnMouseOut(this,'Images/menu4.jpg')" style="background-image:url('Images/menu4.jpg')">
                全部删除
            </div>
            <!--非常用菜单-->
            <hr style="color:#A09F9F;160px; height:1px;"/>
            <div class="MenuDivDefault" onmouseover="MenuOnMouseOver(this,'Images/menu5_click.jpg','true','ChildDiv')" onmouseout="MenuOnMouseOut(this,'Images/menu5.jpg','true','ChildDiv')" style="background-image:url('Images/menu5.jpg')">
                文件排序
            </div>
        </div>
        <cc1:DropShadowExtender ID="DropShadowExtender1" runat="server" TargetControlID="FrameDiv" Width="2" TrackPosition="true" Opacity="0.3">
        </cc1:DropShadowExtender>
       
         <!--上下文菜单二级菜单-->
        <div id="ChildDiv" runat="server" style="170px; height:200px; z-index:2; background-color:White;border-style:solid; border-1px; border-color:#A09F9F; display:none; position:absolute; padding:1px 1px 1px 1px;">
            <!--文件常用菜单-->
            <div class="MenuDivDefault" onmouseover="MenuOnMouseOver(this,'Images/child_menu1_click.jpg')" onmouseout="MenuOnMouseOut(this,'Images/child_menu1.jpg')" style="background-image:url('Images/child_menu1.jpg')">
                名称
            </div>
            <div class="MenuDivDefault" onmouseover="MenuOnMouseOver(this,'Images/child_menu2_click.jpg')" onmouseout="MenuOnMouseOut(this,'Images/child_menu2.jpg')" style="background-image:url('Images/child_menu2.jpg')">
                创建时间
            </div>
            <div class="MenuDivDefault" onmouseover="MenuOnMouseOver(this,'Images/child_menu3_click.jpg')" onmouseout="MenuOnMouseOut(this,'Images/child_menu3.jpg')" style="background-image:url('Images/child_menu3.jpg')">
                类型
            </div>
            <div class="MenuDivDefault" onmouseover="MenuOnMouseOver(this,'Images/child_menu4_click.jpg')" onmouseout="MenuOnMouseOut(this,'Images/child_menu4.jpg')" style="background-image:url('Images/child_menu4.jpg')">
                大小
            </div>
        </div>
        <cc1:DropShadowExtender ID="DropShadowExtender2" runat="server" TargetControlID="ChildDiv" Width="2" TrackPosition="true" Opacity="0.3">
        </cc1:DropShadowExtender>
        </form>
    </body>
    </html>

    注意这句:

     <cc1:DropShadowExtender ID="DropShadowExtender2" runat="server" TargetControlID="ChildDiv" Width="2" TrackPosition="true" Opacity="0.3">
        </cc1:DropShadowExtender>
    这个控件是ASP.NET AJAX1.0中实现阴影效果的控件,因此要在aspx页面添加控件注册:

    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
    控件具体属性意义请查询百度。


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fredlau/archive/2008/04/09/2270003.aspx

  • 相关阅读:
    Flex上传文件报“Error #2038”
    AMQ9558
    perl 运算符
    linux gdm 远程桌面访问
    perl 捕获变量
    android apk嵌套 从一个apk启动另外一个apk
    apk调用另一个apk
    ORA-01591 锁被未决分布式事务处理
    jQuery事件控制点击内容下拉
    作业还是作孽?——Leo鉴书79
  • 原文地址:https://www.cnblogs.com/gssajl/p/1944287.html
Copyright © 2011-2022 走看看