CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  JavaScript

在定制IE鼠标右键菜单时候碰到的一个很奇怪的问题

楼主TrampZMJ(Tramp)2006-05-03 16:01:29 在 Web 开发 / JavaScript 提问

我是JAVASCRIPT新手,目前在做一个小东西碰到一个问题,请高手帮帮忙,感谢了  
   
  我要定制一个IE浏览器的鼠标右键菜单,出是出来了,可是当我在菜单上移动的时候,如果很快的移动多次,不是点击,仅仅是移动,菜单就会自动消失,我还没有写让菜单消失的代码呢。  
   
  可以拷贝代码试试,就是把鼠标在那个菜单上迅速的移动,菜单就会自动消失,很奇怪的。  
   
  如果我吧菜单里面的onmouseover和onmouseout去掉的话,就不会发生,但是这样一来就不像菜单了  
   
   
  代码如下:  
   
  <html>  
  <head>  
  <style   type="text/css">  
          body,td,input,textarea   {font-size:9pt}  
  </style>  
      <script   type="text/javascript"   language="JavaScript">  
          function   showContextMenu(   event   ){  
                  var   mouseMenu   =   window.createPopup();  
                  var   w   =   116;  
                  var   h   =   132;  
                  var   x   =   event.clientX;  
                  var   y   =   event.clientY;  
           
      //写入右键菜单  
                  mouseMenu.document.open();  
                  mouseMenu.document.write("<head>");  
                  mouseMenu.document.write("         <style   type='text/css'>");  
                  mouseMenu.document.write("                 body,td   {font-size:9pt;font-family:Arial;}");  
                  mouseMenu.document.write("                 BODY   {margin:0px;border:0px}");  
                  mouseMenu.document.write("                 TABLE.Menu   {border-top:window   1px   solid;border-left:window   1px   solid;border-bottom:buttonshadow   2px   solid;border-right:buttonshadow   2px   solid;}");  
                  mouseMenu.document.write("                 TD.MouseOver   {background-color:highlight;color:highlighttext;cursor:default;}");  
                  mouseMenu.document.write("                 TD.MouseOut   {cursor:default;}");  
                  mouseMenu.document.write("         </style></head>");  
                  mouseMenu.document.write("         <body   scroll='no'   onConTextMenu='event.returnValue=false;'   bgcolor='D4D0C8'   marginheight='0'   marginwidth='0'>");  
                  mouseMenu.document.write("         <table   class=Menu   width='115'     border='0'   cellpadding='0'   cellspacing='0'>");  
                  mouseMenu.document.write("                                         <tr   disabled><td   width='115'   class=MouseOut   onMouseOver=this.className='MouseOver';   onMouseOut=this.className='MouseOut'   unselectable='on'>&nbsp;   &nbsp;   剪切<font   style='font-size:   8pt'>(<u>T</u>)</font></td></tr>");  
                  mouseMenu.document.write("                                         <tr><td   class=MouseOut   onMouseOver=this.className='MouseOver';   onMouseOut=this.className='MouseOut'   unselectable='on'>&nbsp;   &nbsp;   复制<font   style='font-size:   8pt'>(<u>C</u>)</font></td></tr>");  
                  mouseMenu.document.write("                                             <tr><td   class=MouseOut   onMouseOver=this.className='MouseOver';   onMouseOut=this.className='MouseOut'   unselectable='on'>&nbsp;   &nbsp;   粘贴<font   style='font-size:   8pt'>(<u>P</u>)</font></td></tr>");  
                  mouseMenu.document.write("                                         <tr><td   class=MouseOut   onMouseOver=this.className='MouseOver';   onMouseOut=this.className='MouseOut'   unselectable='on'>&nbsp;   &nbsp;   删除<font   style='font-size:   8pt'>(<u>D</u>)</font></td></tr>");  
                  mouseMenu.document.write("                                         <tr><td><hr   size='2'></td></tr>");  
                  mouseMenu.document.write("                                         <tr><td   class=MouseOut   onMouseOver=this.className='MouseOver';   onMouseOut=this.className='MouseOut'   unselectable='on'>&nbsp;   &nbsp;   查找和替换<font   style='font-size:   8pt'>(<u>F</u>)</font>...</td></tr>");  
                  mouseMenu.document.write("                                         <tr><td><hr   size='2'></td></tr>");  
                  mouseMenu.document.write("                                         <tr><td   class=MouseOut   onMouseOver=this.className='MouseOver';   onMouseOut=this.className='MouseOut'   unselectable='on'>&nbsp;   &nbsp;   属性<font   style='font-size:   8pt'>(<u>A</u>)</font></td></tr>");  
                  mouseMenu.document.write("         </table></body>");  
                  mouseMenu.document.close();  
   
                  //显示  
                  mouseMenu.show(   x,y,w,h,document.body   );  
      //屏蔽IE右键菜单  
                  return   false;  
          }          
      </script>  
  </head>  
  <body   oncontextmenu="return   showContextMenu(event);">  
  </body>  
  </html> 问题点数:100、回复次数:4Top

1 楼moodboy1982(老鹰)回复于 2006-05-03 19:30:12 得分 10

这个问题还有请梅花雪来搞定吧。Top

2 楼iloveictt(随缘)回复于 2006-05-03 22:18:49 得分 0

广告  
   
  欢迎加群  
  名字:网站建设  
  群号:21637188  
  互相学习~~~Top

3 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-05-04 00:39:49 得分 90

1   check   your   positioning   to   see   if   the   window   is   out   of   sight  
  2   check   if   the   object   is   reclaimed   by   the   garbage   collector.   Make   the   mouseMenu   object   global   to   extend   its   lifetime.  
   
  see   also  
  http://msdn.microsoft.com/workshop/author/dhtml/popupmenu.aspTop

4 楼TrampZMJ(Tramp)回复于 2006-05-04 01:14:18 得分 0

呵呵,郁闷了一天,自己解决了。上来公布一下  
   
  原来把var   mouseMenu   =   window.createPopup();放到外面就行了。  
   
   
  楼上的第2点建议不错,的确是lifetime问题,不知道有没有对JAVASCRIPT变量的lifetime介绍得比较详细的资料呢?分就给你了。Top

相关问题

关键词

得分解答快速导航

  • 帖主:TrampZMJ
  • moodboy1982
  • jiangsheng

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo