<%--兼容IE7 必须放在 head 的第一行--%>
独上高楼网站
  • HTML中自定义右键菜单功能
  • 我们使用的应用系统很多都有右键菜单功能。但是在网页上面,点击右键一般显示的却是IE默认的右键菜单,那么我们如何实现自己的右键菜单呢下面将讲解右键菜单功能的实现原理和实现代码。

    实现原理

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

    实现代码

    下面我写了一个示例代码,模拟一个多层div,当我们右键点击多层div某一项的时候,就会弹出右键菜单,里面有“creat row”、“ modify row”、“delete row” 三个菜单项,单击某项会执行相应的操作。下面的代码内容:

    首先,我们需要编辑一个右键菜单,并且将其隐藏,需要时再弹出。

        〈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()">
                            creat row
                        〈/td>
                    〈/tr>
                    〈tr>
                        〈td style="cursor:default;border:outset 1;" align="center" onclick="parent.update();">
                            modify row
                        〈/td>
                    〈/tr>
                    〈tr>
                        〈td style="cursor:default;border:outset 1;" align="center" onclick="parent.del();">
                            delete row
                        〈/td>
                    〈/tr>
                〈/table>
            〈/div>

    其次,将主页面的多层div罗列出来。

        〈div dojoType="ContentPane" label="My Widgets" id="main" oncontextmenu = "javascript:showMenu();">
                    〈div id="xml" oncontextmenu = "javascript:showMenu();">
                        〈div id="grp1" class="module">
                            accepts xml box
                        〈/div>
                    〈/div>
                    〈div id="database" oncontextmenu = "javascript:showMenu();">               
                        〈div id="grp3"class="module">
                            accepts DataBase box
                        〈/div>
                    〈/div>
                    〈div id="rss" oncontextmenu = "javascript:showMenu();">
                        〈div id="grp2" class="module">
                            accepts RSS box
                        〈/div>
                    〈/div>
                〈/div>

    最后,也是关键部分,使用JavaScript编写函数部分。

               〈script language="JavaScript">
                   function showMenu()
                   {     
                          popMenu(itemMenu,100,"111");
                          event.returnValue=false;
                          event.cancelBubble=true;
                          return false;
                   }
                   /**

                   *显示弹出菜单

                   *menuDiv:右键菜单的内容

                   *width:行显示的宽度

                   *rowC

  • 与本文主题相关的文章