Я ищу способ загрузки содержимого svg из внешнего файла, в элемент-заполнитель и, когда он загружен, доступ к его объектам для манипулирования / модификации.
Примерно так:
Host file:
<body>
<svg width="700" height="500">
<rect x="10" y="10" height="480" width="680" fill="red"/>
<g id="placeholder"></g>
</svg>
</body>
drawing.svg file:
<svg>
<circle id="obj1" cx="300" y="250" r="100" fill="blue"/>
</svg>
И вот некоторый псевдокод:
var placeholder = document.getElementById("placeholder");
loadSVGFile("drawing.svg", placeholder, function(svg) {
// Callback called when the file has loaded
var obj = svg.document.getElementById("obj1");
obj.setAttribute("fill", "black");
});
В настоящее время я создаю в памяти новый элемент <object>
, загружаю файл svg, подключаю обработчик события onload, который копирует документсодержимое целевого элемента-заполнителя с помощью рекурсивного сканера узлов.Не красиво, но это работает.Я надеюсь, что есть лучший способ.