我只是想知道如何让这个代码在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);
},
答案 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;
}
},