鼠标快速移动时无法正确捕获Javascript鼠标事件

当我快速移动鼠标时,我正在使用JavaScript mouseover和mouseout事件,但不会触发该事件.你能告诉我问题是什么吗?

请让我知道如何解决此问题.还请告知我是否还有其他需要.

这是代码

的HTML

4 => qq[
    <ul id="primary">
        <li id="firstTab" onm ouseover="changeSecondaryMenu('index','explore');" onm ouseout="changeSecondaryMenu('explore');"><a></a></li>
        <li id="secondTab" onm ouseover="changeSecondaryMenu('home','explore');" onm ouseout="changeSecondaryMenu('explore');"><a></a></li>
        <li id="thirdTab" onm ouseover="changeSecondaryMenu('requests','explore');" onm ouseout="changeSecondaryMenu('explore');"><a></a></li>
        <li onm ouseover="changeSecondaryMenu('explore','explore');"><a class="current" href="contact.pl">About Site</a></li>
    </ul>
],
);

my $primary_menu = $primary_menu{$primary_index};

my %secondary_menu = (
    1 => qq[
        <ul id="secondary" onm ouseover="cancelTimeOut();" onm ouseout="resetTab(event);">
            <li> <a>Summary</a> </li>
            <li> <a>Updates</a>  </li>
            <li> <a>History</a> </li>
            <li> <a>News/Stats</a> </li>
            <li> <a>Gratitude & Good Life</a> </li>
        </ul>
    ],

的JavaScript

function cancelTimeOut(){
    clearTimeout(timer);
}

function resetTab(evt){
    var evt = evt || window.event; // event object
    var target = evt.target || window.event.srcElement; // event target
    var targetID = target.getAttribute("id");
    if (targetID == "secondary") {
        clearTimeout(timer);
        if(currentTab !=null){
            document.getElementById("secondary").innerHTML = tabs[currentTab];
            Rounded("ul#secondary","tr","#FFFFFF","transparent","smooth");
        }
    }
}

function changeSecondaryMenu(tab,selectedTab) {
    currentTab = selectedTab;
    clearTimeout(timer);
    document.getElementById("secondary").innerHTML = tabs[tab];
    Rounded("ul#secondary","tr","#FFFFFF","transparent","smooth");
}

解决方法:

这取决于. Javascript不会尝试在“框架”之间进行插补.意思是,是的,如果您足够快地移动鼠标,则一个mousemove事件将在对象的一侧触发,而下一个mousemove事件将在另一侧触发,因此mouseover和out永远不会被触发,您再明智不过了.

如果捕获这些事件绝对重要,那么您将不得不自己做一些工作.您可以自己加入mousemove,并针对每个事件触发,比较上一次触发和当前触发期间鼠标的位置.您需要在此处做一些几何处理,但是如果由两点创建的线碰到了所讨论对象的边界框(要么根据每个边进行4个比较,要么根据通过该框的X进行2个比较) ),然后手动触发鼠标悬停.然后将鼠标移出.

上一篇:如何在Java中检测Image对象上的鼠标单击事件?


下一篇:javascript – 如何从页面加载和鼠标移动中跟踪鼠标位置?