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

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

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

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

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

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

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

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

Властивість namespaceURI елемента в JavaScript повертає URI простору імен, в якому було створено цей елемент, або null, якщо елемент не належить до певного простору імен. Ця властивість корисна для роботи з XML-документами та документами, що використовують простори імен, такими як XHTML або SVG.

У більшості випадків, при роботі зі звичайними HTML-документами, властивість namespaceURI буде повертати null, оскільки HTML-елементи не належать до певного простору імен. Однак, якщо ви працюєте з XML або XHTML документами, ця властивість дозволяє отримати інформацію про простір імен, до якого належить елемент.

Розглянемо приклад використання властивості namespaceURI з XML-документом:

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://example.com/namespace">
  <child>Текст</child>
</root>
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, 'application/xml');

const rootElement = xmlDoc.documentElement;
const childElement = rootElement.firstChild;

console.log(rootElement.namespaceURI); // "http://example.com/namespace"
console.log(childElement.namespaceURI); // "http://example.com/namespace"

У цьому прикладі ми створюємо XML-документ з елементом root, який належить до простору імен http://example.com/namespace. Потім ми використовуємо DOMParser для аналізу XML-рядка та отримуємо посилання на кореневий елемент та його дочірній елемент. Виклик namespaceURI для кореневого елемента повертає URI простору імен, а для дочірнього елемента - той самий URI, оскільки він успадковує простір імен від батьківського елемента.

Властивість namespaceURI також може бути корисною при роботі з SVG-елементами, які належать до простору імен http://www.w3.org/2000/svg. Наприклад:

<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
</svg>
const svgElement = document.querySelector('svg');
const circleElement = document.querySelector('circle');

console.log(svgElement.namespaceURI); // "http://www.w3.org/2000/svg"
console.log(circleElement.namespaceURI); // "http://www.w3.org/2000/svg"

У цьому прикладі ми отримуємо посилання на SVG-елемент та його дочірній елемент circle. Виклик namespaceURI для обох елементів повертає URI простору імен SVG.

Властивість namespaceURI може бути корисною у випадках, коли необхідно обробляти елементи з різних просторів імен по-різному або коли потрібно визначити, чи належить елемент до певного простору імен. Однак, якщо ви працюєте зі звичайними HTML-документами, ця властивість, ймовірно, не буде дуже корисною, оскільки HTML-елементи не належать до певного простору імен.

Порада:

Використовуйте властивість namespaceURI у поєднанні з властивістю localName для отримання повної інформації про елемент, включаючи його простір імен та локальне ім'я. Наприклад: const fullName = element.namespaceURI + ':' + element.localName;.

Порада:

Якщо ви працюєте з XML або XHTML документами, які можуть містити елементи з різних просторів імен, використовуйте властивість namespaceURI для визначення, чи належить елемент до певного простору імен, перед виконанням будь-яких операцій над ним. Це допоможе уникнути помилок та забезпечить коректну обробку елементів.

Порада:

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

Синтаксис

Element.namespaceURI

Значення

Return

Переглядачі

Переглядач

1

1

1

12.1

12

Переглядач

4.4

18

4

1

Переглядач

-

-

Приклади


У даному прикладі ми демонструємо використання властивості namespaceURI для отримання URI простору імен кореневого елемента HTML документа. Після завантаження сторінки, скрипт автоматично отримує URI простору імен елемента <html> та виводить його в блок результатів. Це дозволяє розуміти, які простори імен використовуються для елементів на сторінці і може бути корисним при роботі з динамічно генерованим контентом або при взаємодії з іншими API.

У цьому прикладі ми перевіряємо, чи належить SVG-елемент до простору імен SVG, використовуючи властивість namespaceURI. Якщо елемент належить до простору імен SVG, ми змінюємо його колір на червоний.

const svgElement = document.querySelector('svg');

if (svgElement.namespaceURI === 'http://www.w3.org/2000/svg') {
  svgElement.style.fill = 'red';
}

У цьому прикладі ми аналізуємо XML-рядок та отримуємо кореневий елемент документа. Потім ми створюємо функцію processElement, яка перевіряє простір імен елемента за допомогою властивості namespaceURI та виконує відповідні дії залежно від цього простору імен. Функція processChildren рекурсивно обходить усі дочірні елементи та викликає processElement для кожного з них.

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://example.com/root" xmlns:child="http://example.com/child">
  <child:element>Дочірній елемент</child:element>
  <element>Кореневий елемент</element>
</root>

<script>
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, 'application/xml');
const rootElement = xmlDoc.documentElement;

function processElement(element) {
  const namespaceURI = element.namespaceURI;
  const localName = element.localName;

  if (namespaceURI === 'http://example.com/root') {
    console.log(`Обробка кореневого елемента: ${localName}`);
  } else if (namespaceURI === 'http://example.com/child') {
    console.log(`Обробка дочірнього елемента: ${localName}`);
  } else {
    console.log(`Обробка елемента з невідомого простору імен: ${localName}`);
  }
}

function processChildren(element) {
  processElement(element);

  const children = element.children;
  for (let i = 0; i < children.length; i++) {
    processChildren(children[i]);
  }
}

processChildren(rootElement);
<script>