Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   разбор DOM SVG файла (https://javascript.ru/forum/events/82449-razbor-dom-svg-fajjla.html)

igorrositsky 09.05.2021 12:13

разбор DOM SVG файла
 
не могу прочитать отдельные элементы внутри SVG файла, что не так?

test.svg
<?xml version="1.0" encoding="utf-8"?>
<svg id="root" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<ellipse id="n1" cx="50" cy="60" rx="20" ry="20" />
<ellipse id="n2" cx="150" cy="60" rx="25" ry="25" />
<ellipse id="n3" cx="250" cy="60" rx="35" ry="35" />
</svg>

test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style type="text/css"></style>
</head>

<body>
<embed id="svg" type="image/svg+xml" src="test.svg" pluginspage="http://www.adobe.com/svg/viewer install/" />

</body>

<script type="text/javascript">

//<object id="root" data="test.svg" type="image/svg+xml"></object>

window.addEventListener("load", on_load);

function on_load ()
{

// console.log(document.getElementById('svg').getSVGD ocument());
// null

// console.log(document.getElementById('svg').svg);
// undefined

// console.log(document.getElementById('svg').content Document);
// undefined

// но!
// console.log(document.getElementById('svg'));
// test.html:25 <embed id=​"svg" type=​"image/​svg+xml" src=​"test.svg" pluginspage=​"http:​/​/​www.adobe.com/​svg/​viewer install/​">​#document<svg xmlns=​"http:​/​/​www.w3.org/​2000/​svg" xmlns:xlink=​"http:​/​/​www.w3.org/​1999/​xlink" id=​"root" version=​"1.1">​<ellipse id=​"n1" cx=​"50" cy=​"60" rx=​"20" ry=​"20">​</ellipse>​<ellipse id=​"n2" cx=​"150" cy=​"60" rx=​"25" ry=​"25">​</ellipse>​<ellipse id=​"n3" cx=​"250" cy=​"60" rx=​"35" ry=​"35">​</ellipse>​</svg>​</embed>​

console.log(document.getElementById('svg').getElem entById('root'));
// test.html:37 Uncaught TypeError: document.getElementById(...).getElementById is not a function


}
</script
</html>

рони 09.05.2021 13:56

igorrositsky,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

voraa 09.05.2021 20:46

Если html файл, и svg файл берутся из локальной файловой системы, то это работать не будет
Они должны передаваться с сервера по протоколу http(s) и из одного домена.
Тогда и getSVGDocument() и contentDocument вернут не null, а документ svg


Часовой пояс GMT +3, время: 08:53.