在定制IE鼠标右键菜单时候碰到的一个很奇怪的问题
我是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'> 剪切<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'> 复制<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'> 粘贴<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'> 删除<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'> 查找和替换<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'> 属性<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




