Non, il n'y en a pas. IE a ses objets TextRange
pour faire le travail. IE> = 9 et tout le reste pour la dernière fois a selectionStart
et selectionEnd
propriétés sur les zones de texte et les entrées de texte. Cette tâche particulière est pas trop mal: ce qui suit supprimera la sélection en cours (le cas échéant), insérer du texte au caret et repositionner le curseur immédiatement après le texte inséré, dans tous les principaux navigateurs:
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();
}
}
Merci beaucoup, pensé que les navigateurs pourraient avoir évolué au cours des dernières années, mais évidemment IE choisit toujours d'être différent. – richw81
La bonne nouvelle est que IE 9 a 'selectionStart' et' selectionEnd'. –
Cela a fonctionné très bien pour ma mise en œuvre dans les trois navigateurs, le seul problème que j'avais était de remplacer le texte sélectionné. Si j'ai remplacé val.slice (0, endIndex) par val.slice (0, startIndex), cela a permis de mettre en surbrillance une sélection et de la remplacer par le texte ajouté. Juste pour les autres qui avaient besoin de la même fonctionnalité que moi. – SomeoneRandom