Здравствуйте, я покажу базовый фрагмент, чтобы получить общее представление о текстовом редакторе. В итоге это будет выглядеть примерно так.

Я наткнулся на эту штуку, когда выполнял задание на собеседовании. Начнем с разработки редактора. Создайте файл index.html.

<html>
<head>
<title>
Text editor
</title>
</head>
<body>
</body>
</html>

Теперь у нас есть пустой скелет для редактора. Откройте тот же файл. Создадим структуру дизайна.

<html>
<head>
<title>
Text editor
</title>
</head>
<body>
<form name="compForm" method="post">
<select>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select>
<img src="bold-text.png" width="10" height="10" />
<img src="italic.png" width="10" height="10" />
<img src="underline.png" width="10" height="10" />
<input type="file"  accept="image/*" name="image" id="file" />
<div id="textBox"><p></p></div></form>
</body>
</html>

В приведенном выше фрагменте мы добавили основные потребности. Я добавил форму с параметрами выбора, которые будут использоваться для изменения размера шрифта. Добавлены некоторые изображения, чтобы показать символы полужирным шрифтом, курсивом и подчеркиванием. Мне пришлось добавить опцию загрузки файлов, так как это было требованием. Итак, я добавил тип входного файла. Наконец, я добавил тег div с идентификатором textBox, который будет нашим текстовым полем для редактирования. Давайте посмотрим, как это выглядит.

Кроме того, мне не нужна кнопка выбора файла. Вместо этого я добавлю текст «Добавить изображение». Точно так же я сделаю div (текстовое поле) редактируемым. Давайте сделаем код.

<input type="file"  accept="image/*" name="image" id="file"  style="display:none;">
<label for="file" style="cursor: pointer;">Add Image</label>
<div id="textBox" contenteditable="true"><p></p></div>

Вы можете увидеть приведенный выше код. Я добавил CSS в тип файла style=”display:none”. Это скроет кнопку загрузки файла. Поэтому я добавил метку для выделения кнопки изображения в виде метки с именем «Добавить изображение» и задал стиль для указателя курсора. С другой стороны, я добавил атрибут с именем contenteditable="true", который сделает div редактируемым. Давайте посмотрим.

Несмотря на добавление contenteditable = «true», я не могу увидеть текстовое поле, чтобы что-то написать. Поэтому я добавляю немного CSS, чтобы все заработало.
В тег ‹head› добавьте немного CSS с тегом ‹style›.

<style type="text/css">
.intLink { cursor: pointer; }
img.intLink { border: 0; }
#toolBar1 select { font-size:10px; }
#textBox {
width: 100%;
height: 200px;
border: 0.5px #000000 solid;
padding: 12px;
margin-top: 5px;
}
</style>

Это сделает редактор видимым на экране с курсором, поскольку мы добавили contenteditable = «true». Вот как это выглядит.

Наконец, дизайнерская часть почти готова. Начнем с логики. Создайте новый файл для логики с именем script.js в той же папке и прикрепите его с помощью index.html.

<script src="script.js"></script>

Откройте файл сценария и добавьте туда код.

var oDoc;
function initiateDocs() {
oDoc = document.getElementById("textBox");
}

Вышеупомянутая функция вызовет загрузку документа и назначит редактор (текстовое поле) переменной oDoc. Вернитесь к index.html и добавьте атрибут onLoad с тегом body.

<body onload="initiateDocs();">

Перейдите к файлу script.js, добавьте новую функцию, которая будет выделять жирный, курсивный и подчеркнутый текст.

function formatType(sCmd, sValue) {
document.execCommand(sCmd, false, sValue); oDoc.focus();
}

В приведенном выше коде я использовал document.execCommand, который будет использоваться для выполнения указанной команды для выбранной части редактируемого раздела. Он принимает 3 параметра:

  • Команда для выполнения. то есть полужирный, курсив, подчеркивание.
  • Указывает, следует ли отображать пользовательский интерфейс по умолчанию. то есть истинное, ложное.
  • Значение, по которому будет выполняться команда. то есть (строка, которую вы хотите преобразовать в полужирный, курсив или подчеркнутый)

Я добавил функцию, которая будет работать с событиями. Свяжем эту функцию с действиями. Откройте index.html

<select onchange="formatType('fontsize',this[this.selectedIndex].value);this.selectedIndex=0;">

Добавлено onchange, которое вызовет функцию formatType с параметрами.

<img src="bold-text.png" width="10" height="10" onclick="formatType('bold');" />
<img src="italic.png" width="10" height="10" onclick="formatType('italic');" />
<img src="underline.png" width="10" height="10" onclick="formatType('underline');" />

Я добавил обработчик события onclick, который будет запускать одну и ту же функцию с другими параметрами. Напротив, вы думаете, как об остальных параметрах. Я добавил значение false по умолчанию во втором параметре, так как для этого нам не нужен пользовательский интерфейс. Последним параметром должен быть выбранный вами текст.

Одновременно я добавлю еще одну функцию для обработки загрузки файлов. Откройте script.js

var loadFile = function(event) {
oDoc.focus();
formatType("insertImage", URL.createObjectURL(event.target.files[0]));
};

Чтобы выполнить эту функцию, нам нужно добавить событие в тип входного файла. вернемся к index.html

<input type="file"  accept="image/*" name="image" id="file"  onchange="loadFile(event)" style="display:none;">

Добавлен метод onchange и call loadfile, чтобы при загрузке файла изображение добавлялось в текстовый редактор.

Мы готовы идти.

Источник: Скачать

Удачного кодирования!