You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mouseup事件preventDefault对选中文本影响不同的原因探究

关于mouseup事件preventDefault()的行为疑问

调用mouseupEvent.preventDefault()通常不会阻止新建选区,但仅当尝试在当前选区内创建选区(如点击选中区域取消选择)时会生效。

代码示例

JavaScript

Array.from(document.querySelectorAll('.broken')).forEach(el => el.addEventListener('mouseup', ev => ev.preventDefault()))

HTML

<div class="broken">
  Try selecting THIS TEXT, next try to click within the selection to deselect (select a collapsed selection.
</div>
<div class="broken" contenteditable>
  This is a contenteditable div, which makes the difference even far clearer, as it visualizes a collapes selection.
</div>
<div>
  And this is a normal div for reference without an event listener, when you select text in this div you can unselect it by clicking within the selection.
</div>

核心疑问

为何选中与未选中文本的行为存在此差异?按预期preventDefault调用应要么始终阻止新建选区,要么从不阻止。

Chrome与Firefox均存在此一致行为,但W3C规范指出mouseup事件无默认动作,调用preventDefault()仅应将defaultPrevented标记为true。


目标

确认该行为是否属于浏览器Bug。

调用preventDefault的原因

调用它的明确目的是将defaultPrevented设为true,原以为该操作不会产生任何副作用。


内容的提问来源于stack exchange,提问作者David Mulder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:12:21