Как сделать раздел WYSIWYG на веб-странице?

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

Итак, по сути, Я хочу знать, как (в принципе) создать редактируемый раздел DIV на веб-странице, что-то похожее на документы Google, FCKEditor или TinyMCE.

Буду очень признателен за любые указатели и информацию.

Спасибо!

Поведение ключевого слова "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) для оценки ваших знаний,...
3
0
2 378
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

TinyMCE имеет открытый исходный код, поэтому вы можете посмотреть, как он работает изнутри. :)

Из инструкции по установке видно, что раздел HTML form (чтобы разрешить отправку формы на сервер для хранения) сделан с textarea внутри, который заменяется редактором TineMCE.

На сам источник ссылается файл tiny_mce.js, на который есть ссылка в целевом HTML-файле, так что это может быть хорошей отправной точкой для того, чтобы увидеть, как он работает.

Удачи!

Редактировать:

Хотя я не тратил много времени, просмотр источника TinyMCE, похоже, указывает на то, что сам редактор находится внутри iframe, так что это может объяснить, как изображения могут отображаться в «редактируемой» области.

Если вам интересно, скачайте пакет разработки и взгляните на tiny_mce/jscripts/tiny_mce/classes/Editor.js. Примерно в строке 400 видно, что они настраивают iframe и добавляют его в DOM целевого HTML.

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

Есть флаг contentEditable, который можно добавить к любому элементу на странице, чтобы сделать его редактируемым, например.

<div contentEditable>I am editable!!!!</div>

Должен работать во всех основных браузерах в настоящее время, и такие вещи, как сочетания клавиш (cmd / ctrl-b и т. д.), Будут просто работать.

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

MSDN, похоже, думает, что это только IE, и публикует это предупреждение: Security Alert Пользователи могут изменять содержимое веб-страницы, когда для свойства contentEditable установлено значение TRUE. Неправильное использование этого свойства может поставить под угрозу безопасность вашего приложения. --- так далее.

dkretz 13.12.2008 05:18

@le dorfier: нет, это не так. Контент не обязательно должен быть доступным для редактирования, чтобы его изменить - почти все текущие браузеры имеют встроенный инструмент отладки или упрощенный инструмент, и в противном случае пользователь может использовать javascript: urls для выполнения произвольного JS-кода на вашей странице. Вы не можете обеспечить безопасность на стороне клиента.

olliej 02.01.2009 12:07

Используйте TinyMCE и отключите панели инструментов.

Серьезно, создание WYSIWYG-редактора для Интернета намного сложнее, чем кажется, и есть миллион способов ошибиться. Вы можете потратить следующие два месяца на борьбу с разными браузерами и прочим, что ломается без уважительной причины, или вы можете доверять людям, которые знают о предмете больше, чем вы или я.

TinyMCE впечатляюще настраивается, и вы можете скрыть все панели инструментов, просто используя самые простые параметры конфигурации:

tinyMCE.init({
    mode: 'textareas',
    theme: 'advanced',
    theme_advanced_buttons1 : '',
    theme_advanced_buttons2 : '',
    theme_advanced_buttons3 : '',
    theme_advanced_statusbar_location : "none",
});

Вы также можете использовать обычный CSS, чтобы сделать

.mceLayout {
    background: none !important;
    border: none !important;
}

Я не уверен, для чего вам нужна область WYSIWYG, но есть вероятность, что в какой-то момент вам понадобится ее содержимое. Вы можете сделать это с помощью простого Javascript:

var editor = tinyMCE.get('editorid');
var stuff = editor.getContent();

Он бесплатный, простой в использовании и проверенный лоты пользователей. Нет веских причин изобретать велосипед.

То, что вы видите, это то, что вы имеете в виду - это способ - не следуйте пути WYSIWYG, поскольку он полон ловушек.

WYMeditor лучше всего подходит для вывода семантического и чистого HTML.

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