使用create range方法的IE 11 javascript出现问题

时间:2018-11-06 09:00:13

标签: javascript internet-explorer

我在一个旧应用程序中具有以下功能,它在Chrome中可以正常工作,但在IE 11中却不能正常工作。我尝试了一个解决方案“ document.getSelection()”,但它确实支持moveStart方法。任何人都可以帮助我重写代码?

      function getCaretPos(element) {             
       var oSel = document.selection.createRange();
        oSel.moveStart('character', -element.value.length);
        return oSel.text.length;
       }

1 个答案:

答案 0 :(得分:0)

对于元素textareainput,您可以使用它们的selectionStart和/或selectionEnd属性获得插入符号的位置。
不幸的是IE11似乎不支持selectionDirection属性,因此,如果要这样做,则必须添加另一个侦听器以找出选择内容。

演示:

textarea.addEventListener('mouseup', function(){
  console.log("textarea",textarea.selectionStart, textarea.selectionEnd)
})

input.addEventListener('mouseup', function(){
  console.log("input", input.selectionStart, input.selectionEnd)
})
<textarea id="textarea">some text</textarea>
<br>
<input id="input" value="some text"/>