Ok, j'ai un problème sur lequel je travaille depuis une semaine et j'ai essayé tout ce que je sais ou que j'ai pu trouver. J'utilise YUI 2.x éditeur où les utilisateurs vont faire un formatage lourd. J'ai un bouton externe sur la page qui doit envelopper le texte sélectionné dans un <span>
lorsque l'utilisateur clique dessus, mais il doit le faire sans perdre tout formatage. Pour une raison de faire ce qui suit aime effacer toutes la mise en forme dans la sélection:Éditeur YUI (RTE): Comment envelopper la sélection avec un <span> et ne pas perdre le formatage?
var sel = myEditor._getSelection();
var newEl = '<span>' + sel + '</span>';
myEditor.execCommand('inserthtml', newEl);
Donc, pour résoudre ce problème, je pense que la meilleure façon est d'utiliser _getSelectedElement()
avec _createCurrentElement('span')
pour rajouter les éléments de style. Voici ce que j'ai jusqu'à présent:
function createSpan() {
var el = myEditor._getSelectedElement();
var sel = myEditor._getSelection();
// IE support
if (document.selection) {
sel = myEditor._getDoc().selection.createRange();
newText = sel.text;
}
else {
newText = sel;
}
// Create the new element with the old styles
myEditor._createCurrentElement('span', {color: el.style.color, fontSize: el.style.fontSize, fontFamily: el.style.fontFamily});
myEditor._selectNode(myEditor.currentElement[0]);
myEditor.currentElement[0].innerHTML = newText;
return myEditor.currentElement[0];
}
Cela fonctionne très bien si _getSelectedElement()
retourne correctement l'élément avec les styles corrects, mais j'ai trouvé que si un utilisateur sélectionne un paragraphe entier, il retournera le BODY
. Et puisque le BODY
n'a aucun style, ils se perdent à nouveau.
Fondamentalement, j'ai besoin de lui pour se comporter comme le bouton Gras sur la barre d'outils, mais utiliser un <span>
et non <b>
. Pourquoi est-ce si difficile?
Des idées ou des suggestions? Merci!
En fait, cela ne fonctionne toujours pas. Toute aide serait appréciée. – Adam