Редакторы форматированного текста javascript

Существует несколько (очень хороших) веб-редакторов с форматированным текстом, написанных на Javascript (например, FCKeditor, YUI Texteditor и многие другие).

Однако я не смог найти никакого руководства по созданию такого компонента. Что-то, что объясняет как соображения высокого уровня (архитектура), так и / или более подробную информацию в «критических» точках низкого уровня (например, почему большинство редакторов используют iFrame, как вы обрабатываете ввод с клавиатуры, например Ctrl-B, Ctrl -C, когда текст выделен, а когда нет и т. д.)

Моя главная мотивация - любопытство; если бы мне пришлось разработать такой редактор сегодня, я бы не знал, с чего начать.

Кто-нибудь знает какой-либо учебник, который охватывает вышеуказанные проблемы (в идеале, что-то, что объясняет, как создать редактор wysiwyg с нуля)?

IIRC, iframe должен заставить Firefox работать хорошо.

alex 02.04.2009 04:53

Если вы хотите написать текстовый редактор JavaScript, вам может потребоваться получить HTML-код выделенного текста в документе, как описано здесь: stackoverflow.com/questions/5643635/…

Anderson Green 21.01.2013 02:26

Используйте свое любопытство, чтобы побудить вас просто открыть исходный код в своем любимом редакторе и начать изучение. Поскольку эти редакторы написаны на JavaScript, ответы на них бесплатны. Я понимаю, что вы ищете что-то более легко усваиваемое, но чтение исходного кода может быть очень полезным. Начать создание редактора может быть так же просто, как взять существующий редактор с открытым исходным кодом и изменить его в соответствии с вашими особыми потребностями.

HectorMac 18.11.2008 21:28
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
32
3
10 008
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После дополнительных исследований я обнаружил следующее. Функциональность для создания редактора форматированного текста уже реализована в браузере. IE был первым, кто создал такой API, и Firefox его воспроизвел.

Обзор

Суть в том, что объект javascript «документ» имеет свойство, называемое designMode, для которого можно установить значение «on». Это преобразует всю страницу в компонент, похожий на текстовое поле. Представьте, что браузер открывает страницу так же, как и MS-Word: пользователь может видеть форматирование, но также может вводить текст на странице (обычно браузер открывает страницу только для чтения).

window.document.designMode = "On";

Поскольку вышеуказанное влияет на всю веб-страницу, большинство редакторов используют iFrames, поэтому редактируемой областью является только iFrame, у которого есть собственный объект документа.

Вдобавок ко всему, есть API, который позволяет легко получить доступ к стилю с помощью javascript. Это отображается методом execCommand (). Например, вы можете вызвать из Javascript

document.execCommand('bold', false, '');

и выделенный текст станет жирным.

Учебники

Я нашел следующее:

Краткий пошаговый гид.

Файл mozilla гид. В нем есть самая удобная справочная информация по API, которую я нашел, а также еще несколько ссылок.

Руководство от Майкрософт.

Это мне очень помогло. В настоящее время я комментирую сильно измененную версию вашего ответа после некоторых экспериментов :)

Carson Myers 06.05.2010 09:34

Спасибо, что спросили, а затем ответили на свой вопрос, это именно то, что я искал.

Steven Herod 18.04.2012 03:57

Другие вопросы по теме