Ответ 1
Нет, нет. У IE есть свои объекты TextRange
для выполнения задания. IE >= 9 и все остальное за последнее долгое время имеет свойства selectionStart
и selectionEnd
на текстовых и текстовых входах. Эта задача не так уж плоха: следующее будет удалять текущий выбор (если таковой существует), вставлять текст в каретку и перемещать каретку сразу после вставленного текста во всех основных браузерах:
function insertTextAtCursor(el, text) {
var val = el.value, endIndex, range;
if (typeof el.selectionStart != "undefined" && typeof el.selectionEnd != "undefined") {
endIndex = el.selectionEnd;
el.value = val.slice(0, el.selectionStart) + text + val.slice(endIndex);
el.selectionStart = el.selectionEnd = endIndex + text.length;
} else if (typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined") {
el.focus();
range = document.selection.createRange();
range.collapse(false);
range.text = text;
range.select();
}
}