在这个例子中,为什么焦点上的window.getSelection()不能在Chrome中工作?

时间:2015-05-09 04:18:05

标签: javascript jquery google-chrome firefox

我尝试使用window.getSelection()在聚焦了一个可知的div时返回节点。

HTML:

<div id="testing" contenteditable="true">
   <p>Click on me while monitoring the console</p>
</div>

jQuery的:

$('#testing').focus(function() {
    console.log(window.getSelection());
});

请在此处查看JSFiddle:http://jsfiddle.net/yftf24g6/

监控控制台,我在Firefox中选择文本节点但不在Chrome中选择(选择{类型:&#34;无&#34;})

任何人都可以解释原因吗?

1 个答案:

答案 0 :(得分:1)

在chrome中(如我所见)在完成选择之前单击可编辑元素时会立即触发focus事件。添加setTimeout解决了这个问题,但这是一个不可靠的黑客攻击。

我建议你使用mouseup事件,

  

当鼠标指针悬停在元素上并且鼠标按钮被释放时, mouseup 事件将被发送到元素。任何HTML元素都可以接收此事件。

$('#testing').mouseup(function() {
    console.log(window.getSelection().toString());
});

在Firefox(37.0.2)和Chrome(42.0.2311)中测试。

<强> Updated Fiddle