Est-il une connexion Internet Explorer de remplacement approuvé pour selectionStart et selectionEnd?
Trouver ce qui est sélectionné dans de vrais navigateurs est aussi simple que:
var range = {
start: textbox.selectionStart,
end: textbox.selectionEnd
}
Mais c'est à dire, comme d'habitude, il ne comprend pas. Quelle est la meilleure manière de croix-navigateur pour ce faire?
Vous devez vous connecter pour publier un commentaire.
Je vais poster cette fonction pour une autre fois, vu que cette question a obtenu lié à l'une de l'autre.
La suivante sera de faire le travail dans tous les navigateurs et traite de tous les nouveaux problèmes liés à la ligne sans sérieusement compromettre les performances. J'en suis arrivé à cette après certains toing et froing et maintenant, je suis assez convaincu que c'est le meilleur exemple de la fonction autour de.
Mise à JOUR
Cette fonction suppose que le textarea/input a le focus, de sorte que vous pouvez avoir besoin d'appeler le textarea du
focus()
méthode avant de l'appeler.getInputSelection()
fonction elle-même. Le problème est que le temps que lesblur
événement se déclenche, la sélection a été détruit dans IE. Vous pouvez utiliser l'IE-seulementbeforedeactivate
événement au lieu d'obtenir la sélection avant il a été détruit: jsfiddle.net/rtdgNnormalizedValue
choses est essentielle pour la manipulation des sauts de ligne correctement. Il est vrai que vous pourriez avoir besoin de se concentrer le textarea d'abord, mais qui est pris en charge par la fonction: je vais ajouter une note pour dire que. Pourriez-vous fournir un exemple de ce qu'il ne fonctionne pas sous IE 8?IE de la Portée de la mise en œuvre est un slithy d'horreur. Il veut vraiment que vous utilisez le exécrable execCommand interface au lieu de tout ce qui concerne l'indexation dans le texte.
Il existe deux approches que je connais pour obtenir les indices et ils ont tous deux des problèmes. Le premier utilise la gamme.de texte comme dans votre exemple de code. Malheureusement gamme.texte a l'habitude de dépouiller attaque et de fuite des retours à la ligne, ce qui signifie que si le curseur de sélection, est au début d'une ligne autre que la première, beforeLength sera éteint par le nombre de retours à la ligne*2) les caractères et vous obtiendrez le mauvais texte sélectionné.
La deuxième approche consiste à utiliser la gamme.moveStart/Fin (sur un doublon de gamme), comme indiqué dans la réponse à cette question: Décalage de caractères dans Internet Explorer TextRange (cependant, comme vous êtes en utilisant un textarea parent, vous pouvez ignorer les choses à propos de nœud de l'enquête). Ce n'est pas le même problème, mais elle relève tous les indices que si les retours à la ligne sont simples LF caractères, même si textarea.la valeur et la portée.le texte sera de retour comme CRLF séquences! Si vous ne pouvez pas les utiliser directement à l'index dans le textarea, mais vous pouvez les fixer avec un tas de retour à la ligne de comptage ou tout simplement les cordes-remplacer tous les CRs de la valeur avant de l'utiliser.
Ma solution actuelle est verbeux et basé sur ce fil, mais je suis ouvert à de meilleures solutions.
De BootstrapFormHelpers