首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么mouseup事件不能阻止单击事件

为什么mouseup事件不能阻止单击事件
EN

Stack Overflow用户
提问于 2013-08-20 18:45:07
回答 2查看 25.1K关注 0票数 22

小提琴

代码语言:javascript
运行
复制
<div class='wrapper'>
    <button class='child'>Click me</button>
</div>

function h(e) {
    e.preventDefault();
    e.stopPropagation();
    e.stopImmediatePropagation();
    alert(e.type);
    return false;
}

document.querySelector('.wrapper').addEventListener('mouseup', h, false);
document.querySelector('.child').addEventListener('click', h, false);

我希望这样可以防止“单击”事件的触发,但它不会。然而,将mouseup更改为mousedown实际上可以阻止单击事件。

我还尝试将useCapture参数设置为true,这也不会在mouseup中产生所需的行为。我在Chrome和Firefox上测试过这个。在我归档窃听器之前,我想我应该在这里问一下。

这是当前浏览器中的一个bug,还是有文档化的行为?

我已经复习了W3C标准(DOM级别2),我找不到任何可以解释这种行为的东西,但是我可能遗漏了一些东西。

在我的特殊情况下,我试图分离两段在同一元素上侦听事件的代码,我认为在具有优先级的部分使用捕获事件将是解决这一问题的最优雅的方法,但随后我遇到了这个问题。FWIW,我只需要支持官方支持的FF和Chrome版本(包括ESR for FF)。

EN

Stack Overflow用户

发布于 2013-10-17 20:11:39

看看这篇古怪的文章

click事件:

当鼠标向下操作和mouseup事件发生在同一元素上时触发。

因此,当鼠标单击被释放时,mouseupclick事件都会被触发,click不会等待mouseup回调完成。几乎所有情况下,mouseupclick都可以作为同义词使用。

为了取消click,就像您演示的那样,可以在mousedown事件回调中返回false,这将阻止click事件的完成。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18342747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档