JavaScript Range.insertNode() — вставити вузол у діапазон
Метод insertNode() вставляє вузол на початок діапазону.
Загальний опис
Це те, як редактори вставляють щось на місце курсора: курсор — це порожній діапазон, і вставка йде саме туди.
Якщо початок діапазону стоїть посеред текстового вузла, той розріжеться на два, а вузол вставиться між ними. Браузер робить це сам.
автор: NagarD
- Порада
-
Вставив вузол — постав курсор після нього (
автор: NagarDsetStartAfter), інакше наступне введення піде перед вставленим.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| insertNode | 1+ | 1+ | 1+ | 7+ | 12+ | 9+ |
| Переглядач | ||||
|---|---|---|---|---|
| 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('👋');
Коментарі
Коментарів ще немає — будьте першим!