javascript - 如何仅当鼠标悬停在元素上至少 1 秒时才触发 mouseover 事件?

标签 javascript prototypejs

我想在用户将鼠标悬停在某个图像上时显示一个对话框。那部分有效。不幸的是,如果鼠标只是快速越过图像的一 Angular ,它就会显示该对话框。我希望仅当鼠标在图像上停留一整秒时才显示对话框,以避免无意中弹出窗口。

我看到了this question但它是针对 jQuery 的,我正在使用 Prototype。我不了解足够的 jQuery 来解释该解决方案。

如果有人可以解释导致鼠标悬停事件延迟触发所需的逻辑或 JavaScript 功能,我将不胜感激。

最佳答案

您无法延迟事件的触发,但可以延迟事件的处理。

这是一个没有 jQuery 或 Prototype 的简单示例,可以使其更容易理解。

var delay = function (elem, callback) {
    var timeout = null;
    elem.onmouseover = function() {
        // Set timeout to be a timer which will invoke callback after 1s
        timeout = setTimeout(callback, 1000);
    };

    elem.onmouseout = function() {
        // Clear any timers set to timeout
        clearTimeout(timeout);
    }
};


delay(document.getElementById('someelem'), function() {
    alert("Fired");
});

关于javascript - 如何仅当鼠标悬停在元素上至少 1 秒时才触发 mouseover 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6231052/

相关文章:

javascript - 使用 Prototype JS 动态添加 CSS

javascript - 如何防止用户移动手指滑动元素时触发 'touched' 事件

javascript - 如何获取 iframe 的父 div 的 ID?

javascript - 让velocity.js 在 JSBin 上运行

javascript - Prototype.js - $(...).next 不是函数

javascript - 为什么在prototype.js中2.ceil()会抛出异常而2.3.ceil()会返回3?

javascript - 复选框和选择选项更新总计值

javascript - 传单 + Backbone.js : how to update the view on model collection update?

javascript - MooTools 和数组原型(prototype)

javascript - 无法弄清楚我的 Carousel 出了什么问题