JavaScript Range.cloneContents() — копія вмісту діапазону


Метод cloneContents() повертає копію вмісту діапазону — як DocumentFragment. Оригінал лишається на місці.

автор: NagarD

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

Повертається саме фрагмент, а не рядок: розмітка всередині зберігається. Тому скопійований шматок можна одразу вставити деінде — жирний текст лишиться жирним.

Якщо потрібен саме текст, простіше взяти range.toString().

автор: NagarD

Переглядачі

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

Приклади

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

Скопіювати виділене в іншу частину сторінки — з розміткою.

HTML

<p id="source">Текст із <b>жирним</b> усередині</p>
<div id="copy"></div>

JS

const selection = window.getSelection();

if (!selection.isCollapsed) {
    const fragment = selection.getRangeAt(0).cloneContents();

    // розмітка збереглась — жирне лишилось жирним
    document.getElementById('copy').append(fragment);

    // а якщо треба лише текст:
    console.log(selection.getRangeAt(0).toString());
}
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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