Атрибут contenteditable тега <body>
Описание
Атрибут contenteditable позволяет сделать содержимое элемента редактируемым прямо в браузере. При применении к тегу <body> весь документ становится редактируемым.
Важно: Использование contenteditable на <body> имеет специфические ограничения и обычно не рекомендуется для production-решений.
Пример использования:
<body contenteditable="true">
<h1>Редактируемый документ</h1>
<p>Кликните в любое место и начните редактирование.</p>
<button onclick="saveContent()">Сохранить изменения</button>
<script>
function saveContent() {
const htmlContent = document.body.innerHTML;
localStorage.setItem('editableContent', htmlContent);
alert('Контент сохранён!');
}
// Восстановление при загрузке
const savedContent = localStorage.getItem('editableContent');
if (savedContent) {
document.body.innerHTML = savedContent;
}
</script>
</body>
Значения атрибута:
| Значение | Поведение |
|---|---|
true или пустая строка |
Элемент редактируемый |
false |
Элемент нередактируемый |
plaintext-only |
Только текст без форматирования (экспериментальное) |
Практические сценарии использования:
- Быстрые прототипы WYSIWYG-редакторов
- Инструменты для создания заметок
- Демонстрационные режимы редактирования
- Образовательные проекты
- Внутренние админ-инструменты
Ограничения и проблемы:
- Нестандартизированное поведение между браузерами
- Сложность контроля форматирования
- Проблемы с производительностью на больших документах
- Ограниченные возможности по настройке
- Нет встроенных инструментов форматирования
Безопасность и санитизация:
- Всегда очищайте HTML перед сохранением
- Используйте DOMPurify или аналогичные библиотеки
- Ограничивайте разрешённые теги и атрибуты
- Не доверяйте клиентскому контенту
- Реализуйте CSRF-защиту для сохранения
Совет: Для серьёзных проектов вместо прямого использования contenteditable рассмотрите специализированные библиотеки: TinyMCE, CKEditor, Quill, ProseMirror или Slate.js.
Примечание: Хотя contenteditable предоставляет быстрый способ сделать страницу редактируемой, для production-решений рекомендуется использовать специализированные WYSIWYG-редакторы, которые решают проблемы кросс-браузерности и предоставляют богатый API для работы с контентом.