Je ne suis venu ici qu'aujourd'hui et j'en ai une idée approximative. Bien sûr, le processus est douloureux dans la première seconde et facile dans les trois dernières secondes. Cet éditeur de texte enrichi est principalement implémenté à l'aide de la méthode document.execCommand() de l'attribut contenteditable fournie avec p. Afin de faciliter la mise en page, j'étais paresseux et j'ai directement utilisé la mise en page des tableaux. Hélas, en tant que développeur front-end dans ces années-là. Personnel, je ne sais vraiment pas quoi dire.
Ce qui suit montre l'effet de la mise en œuvre :
Le processus de mise en œuvre du corps :
(1) Structure HTML :
<table border='1' class="tablebox" id='tablebox'> <tr> <td> <input type="button" name="bold" value='Bold' class="bold"> </td> <td> <input type="button" name="italic" value='Italic' class="italic"> </td> <td> <input type="button" name="underline" value='Underline' class="decotation"> </td> <td>size <select name="fontSize" class="font"> <option value="1">1</option> <option value="3">3</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> </select> </td> <td>img <select name="insertImage"> <option value="">请选择图片</option> <option value="timg.jpg">timg.jpg</option> <option value="timg1.jpg">timg1.jpg</option> <option value="timg2.jpg">timg2.jpg</option> <option value="timg3.jpg">timg3.jpg</option> <option value="timg4.jpg">timg4.jpg</option> </select> </td> <td> <input type="button" name="selectAll" value='全选' class="selectAll"> </td> <td> <input type="button" name="undo" value='撤销' class="undo"> </td> <td> <input type="button" name="justifyLeft" value='left' class="justifyLeft"> </td> <td> <input type="button" name="justifyCenter" value='center' class="justifyCenter"> </td> <td> <input type="button" name="justifyRight" value='right' class="justifyRight"> </td> </tr> <tr> <td colspan='10'> <p class="text" contenteditable="true">这是一个用p的contenteditable属性以及document.execCommand实现的一个简易富文本编辑器。</p> </td> </tr> </table>
(2) Logique d'implémentation JS :
(function() { //富文本编辑器类 class Editor { constructor() { this.bindElem(); } bindElem() { var text = document.querySelector('.text'); var txt = null; var tablebox = document.getElementById_x('tablebox'); var inputbs = tablebox.querySelectorAll('input,select'); for (var i = 0; i { if (inputbs[i].tagName.toLowerCase() == 'input') { this.action(inputbs[i], inputbs[i].name); } else if (inputbs[i].tagName.toLowerCase() == 'select') { inputbs[i].onchange = function() { document.execCommand(this.name, true, this.value); } } } } action(obj, attr) { obj.onclick = function() { document.execCommand(attr, true); } } } new Editor(); })();
Recommandations associées :
Une méthode simple pour implémenter un éditeur de texte enrichi JavaScript
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!