Атрибут 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 для работы с контентом.