Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

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

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

Властивість ownerDocument вузла являє собою посилання на об'єкт документа, до якого належить цей вузол. Вона надає доступ до кореневого об'єкта document для елементів, які є частиною дерева DOM, і дозволяє маніпулювати документом загалом. Ця властивість особливо корисна для роботи з фрагментами документів та для створення нових вузлів поза межами основної структури DOM.

Використання властивості ownerDocument найпростіше проілюструвати на прикладі створення нового елемента за допомогою методу createElement(). Розглянемо базовий випадок:

const newElement = document.createElement('div');

Тут ми створюємо новий елемент <div> за допомогою методу createElement(), який викликається на об'єкті document. Однак, якщо потрібно створити вузол поза межами основного документа, наприклад, всередині іншого вузла або фрагмента, ми можемо використати властивість ownerDocument:

const fragment = document.createDocumentFragment();
const newElement = fragment.ownerDocument.createElement('div');
fragment.appendChild(newElement);

У цьому прикладі ми спочатку створюємо порожній DocumentFragment за допомогою createDocumentFragment(). Потім, використовуючи ownerDocument цього фрагмента, ми створюємо новий елемент <div>. Нарешті, ми додаємо створений елемент до фрагмента за допомогою appendChild().

Властивість ownerDocument також корисна для створення нових вузлів з використанням createTextNode(), createComment() та інших методів маніпуляції DOM. Наприклад:

const fragment = document.createDocumentFragment();
const textNode = fragment.ownerDocument.createTextNode('Це текстовий вузол');
fragment.appendChild(textNode);

Тут ми створюємо новий текстовий вузол за допомогою createTextNode(), викликаного на об'єкті document, доступному через ownerDocument фрагмента.

Властивість ownerDocument може бути особливо корисною при роботі з вузлами, які не належать до основного документа, наприклад, при маніпуляціях з фрагментами документів або при створенні нових документів за допомогою DOMImplementation. Вона забезпечує доступ до кореневого об'єкта document, що дозволяє створювати та маніпулювати вузлами, які не є частиною основної структури DOM.

Порада:

Якщо ви маєте вузол, який не належить до основного документа, наприклад, вузол, який був клонований або переміщений, використовуйте ownerDocument для доступу до кореневого об'єкта document. Це дозволить вам створювати нові вузли або маніпулювати документом загалом, навіть якщо ви працюєте з вузлами, які не є частиною основної структури DOM.

Порада:

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

Порада:

При створенні нових документів за допомогою DOMImplementation.createDocument(), використовуйте властивість ownerDocument нового документа для подальшої маніпуляції вузлами. Це забезпечить належний контекст для створення та додавання нових вузлів до нового документа.

const domImpl = document.implementation;
const newDoc = domImpl.createDocument('http://www.w3.org/1999/xhtml', 'html', null);
const body = newDoc.ownerDocument.createElement('body');
newDoc.documentElement.appendChild(body);

Синтаксис

Node.ownerDocument

Значення

Return

Переглядачі

Переглядач

1

9

1

12.1

12

Переглядач

4.4

18

9

1

Переглядач

-

-

Приклади


У цьому прикладі створено контейнер div з деяким текстом. Є дві кнопки: одна для показу ownerDocument контейнера, а інша - для створення нового документа.

При натисканні на кнопку "Показати ownerDocument" викликається функція showOwnerDocument(), яка отримує ownerDocument контейнера та виводить його documentElement (коренева частина документа) в елемент <p> з ідентифікатором output.

При натисканні на кнопку "Створити новий документ" викликається функція createNewDocument(), яка створює новий порожній документ за допомогою методу implementation.createHTMLDocument('') на об'єкті ownerDocument контейнера. Потім створюється новий елемент <p> і додається до body нового документа. Нарешті, вміст documentElement нового документа виводиться в елемент output.

У цьому прикладі демонструється використання властивості ownerDocument для новоствореного елемента DOM. Спочатку ми створюємо новий елемент div за допомогою методу document.createElement('div'). Потім ми отримуємо ownerDocument для цього елемента, який є об'єктом document, що представляє весь документ. Нарешті, ми виводимо nodeName об'єкта ownerDocument у консоль, що має значення "#document".

// Створюємо новий елемент div
const newDiv = document.createElement('div');

// Отримуємо ownerDocument для новоствореного елемента
const ownerDocument = newDiv.ownerDocument;

// Виводимо назву ownerDocument у консоль
console.log(ownerDocument.nodeName); // Вивід: "#document"

У цьому прикладі ми демонструємо, як використовувати властивість ownerDocument для створення нового документа та додавання елементів до нього. Спочатку ми створюємо новий елемент div та встановлюємо його textContent. Потім ми створюємо новий порожній документ за допомогою методу implementation.createHTMLDocument('') на об'єкті ownerDocument нового елемента div.

Після цього ми додаємо новостворений елемент div до body нового документа за допомогою методу appendChild(). Нарешті, ми виводимо вміст documentElement (коренева частина документа) нового документа у консоль, який містить наш новий елемент div.

Цей приклад демонструє, як можна використовувати властивість ownerDocument для створення нових документів та маніпулювання їх вмістом програмно.

// Створюємо новий елемент div
const newDiv = document.createElement('div');
newDiv.textContent = 'Це новий div';

// Створюємо новий документ
const newDocument = newDiv.ownerDocument.implementation.createHTMLDocument('');

// Додаємо новий елемент div до нового документа
newDocument.body.appendChild(newDiv);

// Виводимо вміст нового документа
console.log(newDocument.documentElement.innerHTML);