`
q272156430
  • 浏览: 270559 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

HTML中实现右键菜单功能

阅读更多

 

HTML中实现右键菜单功能

我们使用的应用系统很多都有右键菜单功能。但是在网页上面,点击右键一般显示的却是IE默认的右键菜单,那么我们如何实现自己的右键菜单呢?下面将讲解右键菜单功能的实现原理和实现代码。

 

 

 

实现原理

HTML语言中,基本上每个对象都有一个oncontextmenu事件,这个事件就是鼠标的右键单击事件(onclick事件是鼠标的左键单击事件),那么我们就可以在鼠标右击的时候,让系统弹出一个窗口(这个是popup窗口,显示在IE的最前面,没有菜单),上面显示我们想要显示的菜单信息,当我们单击其中某一项的时候,就执行我们设定的动作,然后将弹出窗口关闭。

 

 

 

实现代码

下面我写了一个示例代码,模拟一个树型菜单,当我们右键点击树型菜单某一项的时候,就会弹出右键菜单,里面有“新增”、“修改”、“删除”三个菜单项,单击某项会执行相应的操作。如果是在页面的其它地方点击右键的话,就只显示“新增”一个菜单项。下面的代码内容:

 

 

 

contextmenuDemo.html文件

―――――――――――――――――――――――――――――――――

<%--

/**

*实现右键菜单功能

*/

--%>

 

写道

<html>

<body oncontextmenu = showMenu('')>

<form name = "menuForm">

<!--隐藏框,用来保存选择的菜单的id值-->

<input type = "hidden" name = "id" value = "">

<table>

<tr><td><a href="javascript:clickMenu()" oncontextmenu = showMenu('0')>根目录</a></td></tr>

<tr><td><a href="javascript:clickMenu()" oncontextmenu = showMenu('1')>菜单一</a></td></tr>

<tr><td><a href="javascript:clickMenu()" oncontextmenu = showMenu('2')>菜单二</a></td></tr>

</table>

</form>

</body>



<!-- 这里用来定义需要显示的右键菜单 -->

<div id="itemMenu" style="display:none">

<table border="1" width="100%" height="100%" bgcolor="#cccccc" style="border:thin" cellspacing="0">

<tr>

<td style="cursor:default;border:outset 1;" align="center" onclick="parent.create()">

新增

</td>

</tr>

<tr>

<td style="cursor:default;border:outset 1;" align="center" onclick="parent.update();">

修改

</td>

</tr>

<tr>

<td style="cursor:default;border:outset 1;" align="center" onclick="parent.del()">

删除

</td>

</tr>

</table>

</div>

<!-- 右键菜单结束-->
<script language="JavaScript">

/**

*根据传入的id显示右键菜单

*/

function showMenu(id)

{

    menuForm.id.value = id;

    if("" == id)

    {

        popMenu(itemMenu,100,"100");

    }

    else

    {

        popMenu(itemMenu,100,"111");

    }

    event.returnValue=false;

       event.cancelBubble=true;

       return false;

}

 



/**

*显示弹出菜单

*menuDiv:右键菜单的内容

*width:行显示的宽度

*rowControlString:行控制字符串,0表示不显示,1表示显示,如“101”,则表示第1、3行显示,第2行不显示

*/

function popMenu(menuDiv,width,rowControlString)

{

    //创建弹出菜单

    var pop=window.createPopup();

    //设置弹出菜单的内容

    pop.document.body.innerHTML=menuDiv.innerHTML;

    

    var rowObjs=pop.document.body.all[0].rows;

    //获得弹出菜单的行数

    var rowCount=rowObjs.length;

    //循环设置每行的属性

    for(var i=0;i<rowObjs.length;i++)

    {

        //如果设置该行不显示,则行数减一

        var hide=rowControlString.charAt(i)!='1';

        if(hide){

            rowCount--;

        }

        //设置是否显示该行

        rowObjs[i].style.display=(hide)?"none":"";

        //设置鼠标滑入该行时的效果

        rowObjs[i].cells[0].onmouseover=function()

        {

            this.style.background="#818181";

            this.style.color="white";

        }

        //设置鼠标滑出该行时的效果

        rowObjs[i].cells[0].onmouseout=function(){

            this.style.background="#cccccc";

            this.style.color="black";

        }

    }

    //屏蔽菜单的菜单

    pop.document.oncontextmenu=function()

    {

            return false;

    }

    //选择右键菜单的一项后,菜单隐藏

    pop.document.onclick=function()

    {

            pop.hide();

    }

    //显示菜单

    pop.show(event.clientX-1,event.clientY,width,rowCount*25,document.body);

    return true;

}

 



 



function create()

{

    alert("create" + menuForm.id.value + "!");

}

 



function update()

{

    alert("update" + menuForm.id.value + "!");

}

 



function del()

{

    alert("delete" + menuForm.id.value + "!");

}

 



function clickMenu()

{

    alert("you click a menu!");

}

 



</script>

 
</html>

 

 

分享到:
评论

相关推荐

    js实现右键菜单功能

    本文解决的问题:1、实现右键菜单功能代码;2、阻止默认事件的实际应用。 &lt;!DOCTYPE html&gt; &lt;html lang=en&gt; &lt;head&gt; &lt;meta charset=UTF-8&gt; &lt;title&gt;右键菜单&lt;/title&gt; &lt;style ...

    基于JavaScript实现右键菜单和拖拽功能

    1、实现右键菜单功能代码。 2、阻止默认事件的实际应用。 &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;右键菜单&lt;/title&gt; &lt;style type="text/css...

    JavaScript 自定义html元素鼠标右键菜单功能

    主要介绍了JavaScript 自定义html元素鼠标右键菜单功能,本文通过实例代码给大家分享实现思路,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

    JQuery模拟实现网页中自定义鼠标右键菜单功能

    1.首先 我们要禁用掉原网页中右键菜单 //JQuery代码 $(selector).on('contextmenu', function () { return false; }) 这样目标区域的右键菜单就无法使用了 demo1: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; ...

    使用OpenLayers3 添加地图鼠标右键菜单

    添加右键菜单,首先我们要监听鼠标右键点击的操作,我们知道鼠标右键事件名是 contextmenu,当鼠标在 html 元素之上,点击鼠标右键,便会触发 contextmenu 事件,在 contextmenu 事件的回调函数中实现相应的显示菜单...

    Jquery EasyUI Datagrid右键菜单实现方法

    用户在每次使用的时候,都需要去先选中一条或者多条数据,然后在去点按钮进行相关操作,这样其实还是很麻烦的,做项目的过程中,为了用户着想,做了一个右键菜单,用户想要删除或者编辑某一条数据直接在其位置上右键...

    html实现好看的多种风格导航菜单(源码)

    html实现好看的多种风格导航菜单(附源码),导航菜单,源码下载,分为顶部导航菜单,悬浮按钮菜单,右键功能菜单,左侧导航菜单四种导航菜单。每种导航菜单有至少三种风格,总共23种风格,各种风格都有,代码上手简单,...

    jquery ztree实现右键收藏功能

    公司用到ztree。近期把工作中需要的做个...以上所述是小编给大家介绍的ztree实现右键收藏功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持!

    JS自定义右键菜单实现代码解析

    今天来讲一个关于右键菜单的小demo,抛砖引玉。 首先,我们要用css和html做一个自定义右键菜单。 &lt;!--自定义右键菜单html代码--&gt; 功能1 功能2 功能3 功能4 功能5 /*css代码*/ #menu{ width: 0; /*设置为0...

    dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法

    在以前的一个公司内部管理系统(InnerOA)中,对于目录树的构造我采用的是dTree,实现无限级目录显示及右键菜单功能(右键菜单中包括:新建、修改、共享、删除、刷新等功能,如下图所示) 关于公司内部管理系统...

    html中DIV鼠标右击菜单

    html中可对某个区域中鼠标右键实现菜单功能,方便菜单下的操作

    为jQuery-easyui的tab组件添加右键菜单功能的简单实例

    加入了右击TAB选项卡时显示关闭的上下文菜单 具体实现代码: 右键菜单 HTML: 关闭 全部关闭 除此之外全部关闭 &lt;div class=menu-sep&gt;&lt;/div&gt; 当前页右侧全部关闭&lt;

    Bootstrap风格的zTree右键菜单

    主要介绍了Bootstrap风格的zTree右键菜单功能,实现代码分为html,css和js三部分,代码简单易懂,非常不错,需要的朋友可以参考下

    html+css+js仿windows桌面、windows窗口

    用html、css、js实现的windows桌面和窗口。包括开始菜单、状态蓝、窗口等。和windows系统操作方法一样,如双击图标打开窗口,不用的窗口最小化到状态蓝,右击桌面图标可打开右键菜单。开始菜单中附件---游戏中有常见...

    Echarts 实现树状图的展示与编辑示例

    echarts 实现树形图 的...非常详细的操作,包含右键菜单的实现功能。 如果需要更详细的使用支持,可以私信咨询小编或者评论区留言,小编会在第一时间及时回复。 感觉对您有所帮助的话,还请帮小编点赞收藏加关注哦。

    DotNetTextBox3.5.0多功能在线文本编辑器

    *自定义的右键菜单,通过控件属性可自由排列及增减编辑器控件的右键菜单功能! *自动保存编辑器内容里的远程图片到本地的功能! *双击对象的属性检测,双击图片、链接、表格,层就会弹出相关的修改属性窗口! *更完善的...

    JavaScript多级联动浮动菜单 第二版.rar

    JavaScript多级联动浮动菜单 第二版,包含仿京东商城商品分类菜单、仿window xp右键菜单、仿淘宝拼音索引菜单,上一个版本基本实现了多级联动和浮动菜单的功能,但效果不是太好,使用麻烦还有些bug,实用性不高。...

    openlayers官网没有的demos

    在这个项目里,包含了openlayers官网所没有的示例,包括动画、聚合图层、自定义工具等,详细下载看代码 在 openlayers 官方网站 -- ...contextmenu.html,地图鼠标右键菜单功能。

Global site tag (gtag.js) - Google Analytics