Comme suggéré dans le blog de Stéfane Funaro, créer un formulaire de saisie en Flash pour les commentaires d'un blog permet de se mettre à l'abris de manière quasi-complète des "blogspams" ... J'ai mis en place ici ce type d'outil. :) Pour ceux qui avaient choisis de garder un cookie du blog pour mémoriser leurs noms, email, et site web, vous pouvez l'effacer, étant donné que c'est un ShardeObject qui est maintenant utilisé ! 8)

En ce qui me concerne, ayant un blog "fait maison", je n'ai pas encore eu à faire face a des spammeurs, mais c'est surtout pour des raisons pratiques de formatage du texte par les BBCode que j'ai fait ce formulaire en Flash. Je n'ai pas pris la peine de faire un preload pour les 2,26Ko occupés par l'animation ... 8|

Le problème qui s'est posé à moi est que la classe Selection est assez capricieuse : en effet, elle ne permet de connaitre la zone sélectionnée que pour un élément ayant le focus. Or, lorsque l'on clique sur un bouton, ce bouton prend le focus, et on perd donc les informations concernant le texte qui est selectionné. J'ai donc créé une mini-classe qui permet de garder en permanence la sélection faite sur une zone de texte donnée, et de lui appliquyer des "tags" : dans le cas de ce blog, ces tags sont bien évidemment des BBCodes ... ;)

Je vous la livre telle quelle, vite faite et vite commentée ! :oops:/**
* TextFormater
* Premier brouillon, v0.0 alpha
*
* Surveille la sélection dans un champ texte
* et fournit les outils pour le formater
*/

class TextFormater {
        // TextField à formater
        private var _textfield:TextField;
        // Position de début et de fin de la sélection
        private var _begin:Number;
        private var _end:Number;
        // Constructeur
        // Prend en paramètre le champ texte à formater
        function TextFormater ($tf:TextField) {
                this._textfield = $tf;
                // On crée une propriété dans le TextField
                // qui pointe vers l'objet TextFormater
                this._textfield._formater = this;
                // Quand le champ texte prend le focus
                // on surveille la selection
                this._textfield.onSetFocus = function() {
                        this._formatInterval = setInterval(this._formater,"checkSelection",50);
                }
                // Quand le champ texte perd le focus
                // on arrête de le surveiller
                this._textfield.onKillFocus = function() {
                        clearInterval(this._formatInterval);
                }
        }
        // Surveille la sélection faite dans le champ texte
        function checkSelection() {
                // Si le champ texte a bien le focus
                if (eval(Selection.getFocus()) == this._textfield) {
                        // On renseigne le début et la fin de la selection
                        this._begin = Selection.getBeginIndex();
                        this._end = Selection.getEndIndex();
                }
        }
        // Ajoute un "tag" (BBCode ou autre) au début
        // et à la fin de la sélection
        function addTag($begin:String, $end:String) {
                var txt:String = this._textfield.text;
                // Encadre la sélection avec les tags
                this._textfield.text = txt.slice(0,this._begin) + $begin + txt.slice(this._begin,this._end) + $end + txt.slice(this._end);
                // Donne le focus au champ texte et sélectionne
                // le texte encadré par les tags
                Selection.setFocus(this._textfield);
                Selection.setSelection(this._begin,this._end + $begin.length + $end.length);
        }
}

J'espère que ce formulaire vous rendra la vie plus facile pour égayer vos commentaires, en attendant la version W3C du blog, et les versions Flash du blog et de mon site perso. ^^