J'ai un problème. J'essaie de m'y attaquer depuis un moment et je suis prêt à exploser. Voici mon exigence:
J'ai une barre d'outils externe (ne fait pas partie de YUI) au-dessus de l'éditeur que je veux utiliser pour insérer des balises HTML. L'utilisateur doit être en mesure de cliquer sur un lien dans la barre d'outils, après quoi un certain nombre de choses peuvent se produire:YUI Editor (RTE): Insérer un élément HTML et placer le curseur à l'intérieur
- S'il y a un texte sélectionné, ce texte est enveloppé dans une balise HTML
- S'il n'y a pas de texte sélectionné, une balise vide HTML est inséré dans l'éditeur
- Quel que soit le scénario, le curseur DOIT être placé à l'intérieur du nouvel élément, de sorte que lorsque l'utilisateur entre plus de texte, il réside dans le nouvel élément
la fonctionnalité est très similaire à celle de l'appui sur les boutons "B" ou "U" sur l'outil de l'éditeur bar (maintenant que j'utilise cet éditeur, il le fait aussi bien :-)). Il préserve tout bien. Jusqu'à présent, je suis capable de faire 1 ou 2, mais pas 3. Étape 3 est très important, car sans cela, l'expérience utilisateur souffre grandement. J'ai vraiment besoin de votre aide pour l'implémenter. Voici une version simplifiée de la méthode qui effectue l'insertion (il suffit d'insérer DIV pour des raisons de simplicité). this._oEditor - instance locale de YUI Editeur:
this._insertElement = function() {
var sSelection = this._oEditor._getSelection(); // Attempt to get selected text from the editor
if (sSelection == '') sSelection = ' '; // If nothing was selected, insert a non-breaking space
var sNewElt = '<div>' + sSelection + '</div>';
this._oEditor.execCommand('inserthtml', sNewElt);
this._oEditor.focus(); // This gives the editor focus, but places cursor in the beginning!
}
Qu'est-ce que je dois faire pour placer le curseur dans la bonne position? Est-ce même possible? De plus, s'il y a une meilleure façon de mettre cela en œuvre, je suis tout à fait d'accord. Je vous remercie!
Je vais essayer que, je vous remercie. –
@MK_Dev - Avez-vous eu l'occasion d'essayer cela? Faites-moi savoir si cela fait ce que vous cherchiez. –
José, ça a bien fonctionné pour FF 3, Safari 4 et Opera. Je vais essayer cela pour IE plus tard, mais assez sûr que ça va marcher. Chose amusante, je suis tombé sur quelque chose de très similaire il y a un moment, mais je ne l'ai pas sauvegardé. Merci beaucoup! –