Привет, ребята! У меня возникла проблема с выполнением JavaScript из внешнего SVG файла. Вот в чем дело:
Когда я открываю SVG файл отдельно, его JavaScript работает нормально. Если я использую jQuery для включения SVG в HTML через AJAX, все тоже работает как надо.
Но вот загвоздка: когда я пытаюсь сделать то же самое с помощью чистого JavaScript (без jQuery), скрипты из SVG не выполняются!
Я пробовал разные способы:
Использовал XMLHttpRequest для загрузки SVG
Парсил ответ через DOMParser
Добавлял SVG в DOM с помощью appendChild
Но ничего не помогает - JavaScript из SVG все равно не запускается.
Может кто-нибудь подсказать, в чем может быть проблема? Что jQuery делает по-другому? Как заставить это работать на чистом JS?
Я сталкивался с похожей проблемой. Дело в том, что при добавлении SVG через appendChild скрипты не выполняются автоматически. Попробуй после вставки SVG в DOM пройтись по всем тегам внутри него и выполнить их код через eval(). Примерно так:
слушай, я тоже недавно мучился с этим. в итоге нашел решение - использовать объект DOMParser для парсинга SVG, а потом добавлять его через innerHTML. вот пример:
let parser = new DOMParser();
let svgDoc = parser.parseFromString(svgString, ‘image/svg+xml’);
container.innerHTML = new XMLSerializer().serializeToString(svgDoc.documentElement);
после этого скрипты из SVG должны выполниться. главное убедиться, что контейнер находится в DOM на момент добавления. если что, пиши - попробуем еще варианты покрутить!