为什么getSelection()总是什么都不返回?

时间:2016-01-18 01:40:23

标签: javascript jquery html



$("body").on('click', 'button', function(e) {
  var selection =  window.getSelection().toString();
  alert(selection);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="txtarea">this is a test</textarea>
<button>click</button>
&#13;
&#13;
&#13;

在上面的小提琴中,我希望当我点击该按钮时它返回选定文本(在textarea中),但它总是不返回任何内容。我该如何解决?

注意:这不起作用:

var selection = window.getElementById("txtarea").getSelection().toString();

2 个答案:

答案 0 :(得分:6)

当按下鼠标按钮然后释放时发生click事件,此时选择将丢失。

您必须使用mousedown事件,这在选择丢失之前按下鼠标按钮时会发生

function getSelection(elem) {
    var selectedText;

    if (document.selection != undefined) { // IE
        elem.focus();
        var sel = document.selection.createRange();
        selectedText = sel.text;
    } else if (elem.selectionStart != undefined) { // Firefox
        var startPos = elem.selectionStart;
        var endPos   = elem.selectionEnd;
        selectedText = elem.value.substring(startPos, endPos)
    }
    return selectedText;
}

$(document).on('mousedown', 'button', function(e) {
  var selection =  getSelection( $('#txtarea').get(0) );
  alert(selection);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="txtarea">this is a test</textarea>
<button>click</button>

答案 1 :(得分:0)

无法解决问题,AFAIK - 点击任意位置即可删除选择内容。尝试不使用JavaScript:只要单击按钮,或者确实在任何地方,选择就会消失。您的代码会在发生这种情况后向您显示准确的状态。

相关问题