Javascript IE11是否支持此代码的版本?

Javascript IE11是否支持此代码的版本?,javascript,internet-explorer-11,Javascript,Internet Explorer 11,我只是想知道如何让这段代码在IE11上运行,以返回文本字段中的当前光标位置: getCursorPosition: function() { var s, e, r; if(this.inputTextElement.createTextRange){ r = document.selection.createRange().duplicate(); r.moveEnd('character', this.inputTextElement.value.length);

我只是想知道如何让这段代码在IE11上运行,以返回文本字段中的当前光标位置:

getCursorPosition: function() {
  var s, e, r;
  if(this.inputTextElement.createTextRange){
     r = document.selection.createRange().duplicate();
     r.moveEnd('character', this.inputTextElement.value.length);
     if(r.text === ''){
        s = this.inputTextElement.value.length;
     } else {
        s = this.inputTextElement.value.lastIndexOf(r.text);
     }
     r = document.selection.createRange().duplicate();
     r.moveStart('character', -this.inputTextElement.value.length);
     e = r.text.length;
  } else {
     s = this.inputTextElement.selectionStart;
     e = this.inputTextElement.selectionEnd;
  }
  return this.CursorPosition(s, e, r, this.inputTextElement.value);
},

我发现了问题。显然IE11不支持第一部分(first if语句),但在if语句中返回true。我的代码现在专门检查IE11,并确保在第一个if语句中没有使用IE11。第二条if语句运行正常。

请尝试以下操作:

    getCursorPosition: function () {
    var s, e, r;
    if (this.inputTextElement.getSelection) {
        r = document.getSelection();
        if (r.text === '') {
            s = this.inputTextElement.value.length;
        } else {
            s = this.inputTextElement.value.lastIndexOf(r.text);
        }
        e = r.focusOffset.toString();
    } else {
        s = this.inputTextElement.selectionStart;
        e = this.inputTextElement.selectionEnd;
    }
    return this.CursorPosition(s, e, r, this.inputTextElement.value);
},
同时更改下面的功能

moveCursorToPosition : function(keycode, cursorPosition) {
    var p = (!keycode || (keycode && keycode.isBackspace ))? cursorPosition.start: cursorPosition.start + 1;
    if (this.inputTextElement.getSelection) {
        cursorPosition.range.move('character', p);
        cursorPosition.range.select();
    } else {
        this.inputTextElement.selectionStart = p;
        this.inputTextElement.selectionEnd = p;
    }
},

你知道它的哪一部分不起作用了吗?IE11运行第一个if语句,然后在document.selection.createRange().duplicate()处返回一个错误;IE11不支持document.selection,但我不知道如何使用window.getSelection()获取相同类型的对象;