我不明白为什么我不能得到正确的范围对象。我很难解释这个问题。
例如:我有五个 div,每个 div 包含一个短语。从逻辑上讲,如果我在其中一个 div 中触发mousedown
事件,我可以获得事件目标。好的,这是初级的。
但是,如果我在事件上使用范围对象mousedown
,则事件目标始终是我单击的,但range.startContainer
指向前一个 div;
看看这个小提琴:
1 LineLineLine
2 LineLineLineLineLine
3 LineLineLineLine
4 LineLineLine
5 LineLineLineLine
重现问题的步骤(参见控制台):
- 在第一行按住鼠标按钮(控制台说“未定义” [*])
- 释放鼠标按钮(范围现在安全地指向第一行)
- 在第四行按住鼠标按钮(控制台说“第一行”)
- 控制台显示上一个单击的行
[*] 未定义,因为文档还没有范围,但这无关紧要,因为我可以即时创建一个并将他注入到文档中。
我可以推断出 mousedown 事件是在范围之前执行的。或者不是?