Failed to execute 'appendChild' on 'Node': Unexpected identifier 'site'

Ошибка Uncaught SyntaxError: Failed to execute 'appendChild' on 'Node': Unexpected identifier 'site' возникает, когда JavaScript пытается вставить некий некорректный фрагмент кода в дерево документа, и встречает нечто, что нельзя интерпретировать как действительную инструкцию.

Обычно подобная ошибка проявляется, когда в коде присутствует неприемлемый или поврежденный JavaScript-код, который получается динамически, например, через AJAX-запрос или серверную генерацию.

Шаги для нахождения и устранения проблемы



Открытие вкладки Console в инструментах разработчика (DevTools): Первое, что нужно сделать, — это открыть консоль браузера и изучить детали ошибки. Консоль выдаст всю необходимую информацию, включая имя файла и номер строки, где произошла ошибка.

Определите происхождение JavaScript-кода: Если вы увидели, что ошибка возникает после AJAX-запроса, найдите точку, где этот запрос выполняется, и изучите ответ сервера. Возможно, в ответе содержится повреждённая или небезопасная...

Synchronous XMLHttpRequest on the main thread is deprecated

Если вы столкнулись с предупреждением «Synchronous XMLHttpRequest on the main thread is deprecated», это значит, что ваш код совершает синхронные запросы на главную нить браузера. Подобная практика признана устаревшей и не рекомендуется из-за серьёзного негативного влияния на пользовательский опыт.

В этой статье мы расскажем, почему появились такие запросы, каковы последствия их использования и как можно исправить ситуацию.

Что такое синхронные запросы?


Синхронный запрос — это когда выполнение программы блокируется до завершения сети. Другими словами, пока запрос не получит ответ от сервера, браузер не сможет продолжать обработку скриптов и реагировать на действия пользователя.

Например, возьмем такой JavaScript-код:
var xhr = new XMLHttpRequest();
xhr.open('GET', '/api/data', false); // Параметр false делает запрос синхронным
xhr.send();
console.log(xhr.responseText);

Параметр false в третьей позиции заставляет запрос ждать завершения передачи данных от сервера,...

Cannot read properties of undefined (reading 'trim')

Ошибка TypeError: Cannot read properties of undefined (reading 'trim') возникает, когда вы пытаетесь вызвать метод или прочитать свойство у переменной, которой присвоено значение undefined или null.

Обычно такая ошибка встречается в JavaScript, когда программа ожидает объект или строку, но по факту переменная не была инициализирована или стала неопределённой.

Наиболее частые причины появления этой ошибки



Обращение к свойствам объекта, который не определен
Например, вы вызвали метод .trim() на строке, но строка оказалась равна undefined:
let myVar = undefined;
console.log(myVar.trim()); // Uncaught TypeError: Cannot read properties of undefined (reading 'trim')

Несуществующие элементы DOM
Если вы пытаетесь манипулировать элементом, который не существует в документе:
const element = document.querySelector('.nonexistent-class');
console.log(element.textContent.trim()); // Uncaught TypeError: Cannot read properties of null (reading 'trim')

Поддержка устар...

Манипуляция SVG с помощью JavaScript

Scalable Vector Graphics (SVG) — это формат векторной графики, широко используемый в веб-разработке. Одним из мощных инструментов для работы с SVG является JavaScript, который позволяет динамически изменять атрибуты, стили и поведение SVG-элементов.

В этой статье мы рассмотрим основные приемы манипуляции SVG с помощью JavaScript.

Доступ к SVG-элементам


Для того чтобы манипулировать SVG-элементами, нужно сначала получить доступ к ним с помощью JavaScript. Вот несколько способов:

Получение элемента по ID:
let svgCircle = document.getElementById('myCircle');

Получение элементов по классу:
let circles = document.getElementsByClassName('circle');

Получение всех элементов SVG:
let svgElements = document.querySelectorAll('svg *');

Изменение атрибутов SVG


Один из самых частых способов манипуляции SVG — это изменение атрибутов элементов. Вот несколько примеров:

Изменение цвета заливки и обводки:
let circle =
...

Простые и эффективные техники анимации SVG с GSAP

GreenSock Animation Platform (GSAP) — это мощная библиотека для создания качественной анимации в веб-пространстве. Вместе с SVG GSAP позволяет создавать потрясающе выглядящие и интерактивные элементы. В этой статье мы рассмотрим простые и эффективные техники, которые помогут оживить SVG с помощью GSAP.

Введение в GSAP и SVG



Что такое GSAP?
GSAP — это высокопроизводительная библиотека для анимации, позволяющая анимировать практически любые CSS-свойства и DOM-элементы. В отличие от CSS-анимации, GSAP предлагает больший контроль и лёгкость управления.

Как подключить GSAP?
Подключить GSAP можно через CDN:
<script src="https://cdn.jsdelivr.net/npm/gsap@3/dist/gsap.min.js"></script>

Простые техники анимации SVG с GSAP



Анимация движения (Motion Path)
GSAP позволяет анимировать путь (motion path) по траектории, заданной в SVG. Это особенно полезно для создания плавных перемещений объектов:
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <path d="M10,10
...