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

时间:2014-06-17 22:51:36

标签: 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);
     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);
},

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

试试这个:

    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;
    }
},