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
相关产品推荐
相关产品推荐

