JavaScript Range.insertNode() — вставити вузол у діапазон


Метод insertNode() вставляє вузол на початок діапазону.

автор: NagarD

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

Це те, як редактори вставляють щось на місце курсора: курсор — це порожній діапазон, і вставка йде саме туди.

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

автор: NagarD

Порада

Вставив вузол — постав курсор після нього (setStartAfter), інакше наступне введення піде перед вставленим.

автор: NagarD

Переглядачі

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

Приклади

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

Вставити емодзі на місце курсора.

HTML

<div id="editor" contenteditable>Текст із курсором</div>

JS

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

function insertAtCursor(text) {
    const selection = window.getSelection();
    const range = selection.getRangeAt(0);

    range.deleteContents(); // якщо щось було виділене

    const node = document.createTextNode(text);
    range.insertNode(node);

    // курсор — ПІСЛЯ вставленого
    range.setStartAfter(node);
    selection.removeAllRanges();
    selection.addRange(range);
}

insertAtCursor('👋');
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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