onmouseover, onmouseout的触发顺序问题

最近在改造一个现有的层级菜单(popup实现)功能,本想利用各菜单项的鼠标移入和移出时间设置标志位,来判断当鼠标移出整个菜单时,将菜单整体隐藏。

很想当然的认为,从一个菜单项A移到另一个菜单项B,肯定是先触发A的onmouseout,再触发B的onmouseover,可试验结果表明,没有这么简单。

当鼠标在同一层级的菜单内(同一个popup内)移动时,我的推断是正确的。但当鼠标在不同层级内移动时,事件的触发却没有固定的先后关系。

以慢速移动鼠标,一切正常。但快速移动鼠标时,问题来了。当速度快到一定程度,先被触发有可能会变成B的onmouseover时间,整个顺序反过来了。

为说明情况,写了一段实例代码。

<! 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 >
< meta  http-equiv ="Content-Type"  content ="text/html; charset=gb2312"   />
< title > 无标题文档 </ title >
< script  language ="javascript" >
var popup = window.createPopup( );
var bod = popup.document.body;
bod.innerHTML 
= "<table width='100%' height='100%' bgcolor='#999999'><tr οnmοuseοver='top.status=""' οnmοuseοut='top.status+=" pop:out"'><td valign=top>pop</td></tr></table>";
popup.show(
200200100100, document.body);

var subPopup = popup.document.parentWindow.createPopup( );
var subBod = subPopup.document.body;
subBod.innerHTML 
= "<table width='100%' height='100%' bgcolor='#cccccc'><tr οnmοuseοver='top.status+=" sub:in"'><td valign=top>sub</td></tr></table>";
subPopup.show(
1000100100, bod);
</ script >
</ head >
< p > &nbsp; </ p >
< p > &nbsp; </ p >
< p > &nbsp; </ p >
< p > &nbsp; </ p >
< p > &nbsp; </ p >
< p > &nbsp; </ p >
< p > 鼠标从pop移动到sub,移动速度不同时,onmouseover和onmouseout触发的先后顺序不同。具体触发顺序见IE状态栏。 </ p >
< p > 慢:onmouseover - &gt;  onmouseout </ p >
< p > 快:onmouseout - &gt;  onmouseover </ p >

</ body >
</ html >

 问题尚未找到解决方法,准备暂时采取判断鼠标位置的方法来控制菜单的隐藏显示,但这样效率太低。继续研究中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值