JS властивість Element.isContentEditable


Загальний опис

isContentEditable - це властивість об'єкта Element, яка визначає, чи може вміст елемента редагуватися користувачем. Ця властивість корисна для створення інтерактивних веб-сторінок, де користувачі можуть безпосередньо змінювати вміст певних елементів. Вона часто використовується у текстових редакторах, коментарях, віджетах та інших інтерактивних компонентах.

Властивість isContentEditable може набувати одного з трьох значень: true, false або inherit. Якщо значення встановлено на true, вміст елемента стає редагованим, і користувач може змінювати його за допомогою клавіатури або миші. Якщо значення false, вміст елемента не можна редагувати. Нарешті, якщо значення inherit, елемент успадковує значення властивості isContentEditable від свого батьківського елемента.

Розглянемо приклад використання isContentEditable:

<div id="editable" contenteditable="true">Натисніть тут, щоб редагувати цей текст</div>

У цьому прикладі ми маємо div з ідентифікатором editable, для якого встановлено властивість contenteditable="true". Це робить вміст елемента редагованим, і користувач може змінювати текст безпосередньо на веб-сторінці.

Ви також можете змінювати значення isContentEditable за допомогою JavaScript:

const editableDiv = document.getElementById('editable');
editableDiv.contentEditable = true; // Робить вміст редагованим
editableDiv.contentEditable = false; // Робить вміст нередагованим

Крім того, ви можете використовувати isContentEditable для перевірки, чи є елемент редагованим:

const editableDiv = document.getElementById('editable');
if (editableDiv.isContentEditable) {
  console.log('Елемент редагований');
} else {
  console.log('Елемент не редагований');
}

Варто зазначити, що властивість isContentEditable діє не лише на текстовий вміст, але й на інші елементи, такі як зображення та інші вкладені елементи. Це дозволяє створювати більш складні редагування, де користувачі можуть переміщати, змінювати розмір або видаляти різні компоненти на веб-сторінці.

Однак слід бути обережними з використанням isContentEditable, оскільки це може призвести до проблем безпеки, якщо користувачі можуть вводити небажаний або небезпечний вміст. Тому рекомендується завжди валідувати та очищувати введений користувачем вміст перед збереженням або відправкою на сервер.

автор: Bond

Порада

Завжди валідуйте та очищуйте введений користувачем вміст перед збереженням або відправкою на сервер. Це допоможе уникнути проблем безпеки, пов'язаних з небажаним або небезпечним вмістом, який можуть вводити користувачі.

автор: Bond
Порада

Пам'ятайте, що isContentEditable впливає не лише на текст, але й на інші вкладені елементи, такі як зображення та інші компоненти. Це дозволяє створювати складніші редагування, де користувачі можуть переміщати, змінювати розмір або видаляти різні компоненти на веб-сторінці.

автор: Bond
Порада

Ви можете використовувати isContentEditable для перевірки, чи є елемент редагованим. Це корисно для реалізації різної логіки залежно від стану редагування елемента. Наприклад:

const editable = document.getElementById('editable');
if (editable.isContentEditable) {
  // Логіка для редагованого елемента
} else {
  // Логіка для нередагованого елемента
}
автор: Bond

Синтаксис

Element.isContentEditable

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 4 3 ≤12.1 12 5.5
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми отримуємо елемент з ідентифікатором "myElement" за допомогою методу document.getElementById(). Потім ми перевіряємо властивість isContentEditable цього елемента. Якщо властивість дорівнює true, це означає, що вміст елемента можна безпосередньо редагувати користувачем. В іншому випадку, якщо властивість дорівнює false, вміст елемента не можна редагувати. Відповідне повідомлення виводиться у консоль.

HTML

<div id="myElement">Демонстраційний елемент</div>

JS

// Отримуємо елемент з ID "myElement"
const myElement = document.getElementById('myElement');

// Перевіряємо, чи є елемент доступним для редагування
if (myElement.isContentEditable) {
  console.log('Елемент доступний для редагування');
} else {
  console.log('Елемент не доступний для редагування');
}
автор: Bond

У цьому прикладі ми створюємо функцію toggleEditMode, яка приймає елемент як аргумент і перемикає його режим редагування. Властивість isContentEditable елемента змінюється на протилежне значення за допомогою оператора !. Також ми змінюємо стилі елемента, щоб візуально відобразити, чи він доступний для редагування. Якщо елемент доступний для редагування, ми встановлюємо синю пунктирну рамку навколо нього та змінюємо курсор на текстовий. Якщо елемент не доступний для редагування, ми скидаємо ці стилі до їхніх значень за замовчуванням.

HTML

<div id="editableDiv">Демонстраційний елемент</div>

JS

// Функція для перемикання режиму редагування елемента
function toggleEditMode(element) {
  element.isContentEditable = !element.isContentEditable;
  element.style.outline = element.isContentEditable ? '2px dashed blue' : 'none';
  element.style.cursor = element.isContentEditable ? 'text' : 'default';
}

// Отримуємо елемент з ID "editableDiv"
const editableDiv = document.getElementById('editableDiv');

// Додаємо обробник події для клавіші "E"
document.addEventListener('keydown', function(event) {
  if (event.key === 'e') {
    toggleEditMode(editableDiv);
  }
});
автор: Bond

У цьому прикладі ми маємо елемент <div> з ідентифікатором editableDiv, який містить деякий текст. За замовчуванням його властивість contenteditable встановлена на false, що означає, що користувач не може редагувати його вміст.

Також присутня кнопка <button> з ідентифікатором toggleEditButton. При натисканні на цю кнопку викликається функція toggleEditMode(), яка змінює значення властивості contentEditable елемента editableDiv на протилежне.

Коли властивість contentEditable елемента editableDiv має значення true, навколо нього відображається синя пунктирна рамка (завдяки CSS-стилям), що візуально вказує на те, що користувач може редагувати його вміст.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід