SVG, встроенный в HTML, проблемы с перетаскиванием кода

#javascript #html #svg #draggable

#javascript #HTML #svg #перетаскиваемый

Вопрос:

У меня есть SVG-файл, встроенный в HTML-документ внутри. Я могу получить доступ к элементам javascript в html и svg, используя идентификаторы и классы. Тем не менее, я хочу выполнить некоторое перетаскивание встроенного svg. Я использовал следующий пример в http://svg-whiz.com/svg/DragAndDrop.svg отделяя SVG от javascript, но это доставляет мне проблемы, когда я встраиваю SVG в HTML. Функция инициализации в SVG не работает при внедрении

 onload="initSVG(evt)"
 

Мне нужно получить доступ к корню SVG в HTML, чтобы я мог заставить работать процедуры перетаскивания. Исходный код для автономного svg написан следующим образом:

 function initSVG(evt)
{
SVGDocument = evt.target.ownerDocument;
SVGRoot = SVGDocument.documentElement;
TrueCoords = SVGRoot.createSVGPoint();
GrabPoint = SVGRoot.createSVGPoint();
}
 

Моя перезапись похожа на такую, чтобы ее можно было запускать без вызова события onload:

 function initSVG()
{
SVGRoot = document.getElementsByTagName("svg");
TrueCoords = SVGRoot.createSVGPoint();
GrabPoint = SVGRoot.createSVGPoint();
}
 

Что выдает ошибку: «Объект # не имеет метода ‘CreateSVGPoint'». Похоже, что импортированный SVG не обрабатывается так же, как отдельный svg. Как я могу получить SVGRoot?

Спасибо!

PS Я знаю, что, вероятно, мне следует использовать jquery, но я хотел изучить raw DOM.

Ответ №1:

getElementsByTagName Функция возвращает a NodeList , а не элемент. Попробуйте:

 SVGRoot = document.getElementsByTagName("svg")[0];