Question

J'ai implémenté l’ éditeur de texte enrichi YUI et je souhaite supprimer le < html > , < corps > et DOCTYPE dès que j'enregistre le contenu dans l'éditeur. Je sais que je pourrais le faire après en analysant le code HTML, mais il doit y avoir une meilleure solution.

À présent, cela est enregistré lorsque je modifie un texte dans l'éditeur YUI:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
    <body>
        <p>foo</p>
    </body>
</html>

... mais j'aimerais simplement enregistrer ceci:

<p>foo</p>

Une idée?

PS: J'ai implémenté l'éditeur YUI à l'aide du du plug-in yui_editor pour ruby ??on rails . , mais une réponse générique de l'éditeur YUI serait également la bienvenue!

Était-ce utile?

La solution

En attendant, j'ai moi-même résolu le problème en analysant le code HTML lors de la soumission. Oui, je sais, je ne cherchais pas cette solution au début, mais je suis finalement arrivée à la conclusion que c’était le moyen le plus facile de la résoudre. J'ai utilisé le Nokogiri RubyGem pour que Rails effectue l'analyse syntaxique:

value = Nokogiri::HTML(yui_content).css('body').to_html 
value.gsub!(/<body>/,'') 
value.gsub!(/<\/body>/,'')

Autres conseils

Une solution serait la suivante: il utilise des expressions régulières pour tout saisir entre < body > et < / body > . Exemple (modifié depuis la page de l'éditeur YUI):

var myEditor = new YAHOO.widget.Editor('msgpost');
myEditor.render();

YAHOO.util.Event.on('somebutton', 'click', function() {
    myEditor.saveHTML();

    //The var html will now have the contents of the textarea
    var html = myEditor.get('element').value, match;

    match = html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
    html = match ? match[1] : html;
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top