JavaScript Range.commonAncestorContainer — спільний предок діапазону


Властивість commonAncestorContainer повертає найближчий вузол, що містить увесь діапазон цілком.

автор: NagarD

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

Якщо виділення не виходить за межі одного абзацу, це буде текстовий вузол усередині нього. Якщо тягнеться через кілька абзаців — їхній спільний батько.

Головне застосування — перевірити межі: чи виділення взагалі всередині мого редактора, чи користувач зачепив і сусідні блоки. Без цієї перевірки кнопка форматування зіпсує розмітку поза редактором.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
commonAncestorContainer 1+ 1+ 1+ 7+ 12+ 9+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
commonAncestorContainer yes yes yes yes

Приклади

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

Не форматувати те, що виділили поза редактором.

HTML

<div id="editor" contenteditable>Текст редактора</div>
<p>Текст поза редактором</p>

JS

// у демо виділення створюємо самі; вручну виділи текст і спробуй ще раз
const initialRange = document.createRange();
initialRange.selectNodeContents(document.getElementById('editor').firstChild);
window.getSelection().removeAllRanges();
window.getSelection().addRange(initialRange);

const editor = document.getElementById('editor');
const range = window.getSelection().getRangeAt(0);

// виділення вийшло за межі редактора?
if (!editor.contains(range.commonAncestorContainer)) {
    console.warn('Виділення поза редактором — не чіпаємо');
} else {
    range.surroundContents(document.createElement('b'));
    console.log('Виділене в редакторі зроблено жирним');
}
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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