Owen a la bonne idée. Ces bibliothèques remplacent la zone de texte par un iframe, puis placent le document iframe en mode designMode
ou contentEditable
. Cela vous permet littéralement de modifier le document html dans l'iframe tandis que le navigateur gère ensuite le curseur et toutes les frappes pour vous et vous donne une API qui peut être appelée pour faire des changements de style (gras, italique, etc.). Ensuite, lorsque l'utilisateur soumet le formulaire, il copie le innerHTML de l'iframe dans la zone de texte d'origine. Pour plus de détails sur comment activer ce mode et ce que vous pouvez faire avec, voir: https://developer.mozilla.org/En/Rich-Text_Editing_in_Mozilla
Cependant, je vous suggère d'utiliser l'une des bibliothèques de contrôle de texte enrichi existantes si vous souhaitez cette fonctionnalité sur votre site. J'en ai construit un avant et j'ai constaté que vous allez passer énormément de temps à gérer les incohérences du navigateur afin d'obtenir quelque chose qui fonctionne bien. Au-delà des différences dans la façon dont vous activez les fonctionnalités d'édition, vous souhaiterez également normaliser le code HTML créé. Par exemple, IE crée <br>
éléments lorsque l'utilisateur appuie sur Entrée et que FF crée <p>
. Pour les modifications de style, IE utilise <b>
, <i>
, etc. alors que FF utilise des plages avec des attributs de style.
Cela a du sens, mais comment verriez-vous le curseur si une div était au-dessus? – Petras
En fait le curseur est placé sur l'affichage et géré par javascript. L'utilisateur n'interagit pas réellement avec la zone de texte. –