【发布时间】:2014-08-14 15:17:01
【问题描述】:
我正在开发一个小型文本编辑功能,我需要知道用户何时选择/取消选择文本,以便相应地显示可用选项。例如:选择文本时,可以创建链接、加粗等。如果没有选择文本,则根本不显示这些选项。
我在mouseup 和keyupevents 上使用window.getSelection(),然后检查isCollapsed 属性的值以查看是否存在活动选择。它有效,但并非在所有情况下都有效。以下是使用此 JSFiddle 重现的一些步骤:http://jsfiddle.net/0qqbaqo4/
这行得通
- 选择一些文本。
- 通过单击当前选择外部文本中的任何其他位置取消选择它。
- 结果应该是“有一个活动选择:false”。
这不起作用
- 选择一些文本。
- 通过单击内当前选择的任意位置取消选择它。
- 结果应该是“有一个活动的选择:假”,但它实际上仍然是真的。
这发生在我在 Mac OS 上的 Chrome 36 和 Firefox 31 中。我还没有在其他浏览器中测试过。
我想也许在mouseup 上,文本选择仍然处于活动状态,我应该等待其他一些事件触发,但我什么也没找到。
任何帮助都会很棒,谢谢:)
【问题讨论】:
-
不能使用 onblur 事件吗?
-
不,因为通过单击活动选择,您永远不会离开该元素,您只会更改插入符号的位置。因此没有模糊事件。
标签: javascript html getselection