Вход

Просмотр полной версии : Как вставить сериализованную строку в SVG ?


ravend
06.07.2015, 10:34
Всем привет!

требуется перенести часть элементов из одного svg в другой svg

сериализовать часть элементов можно такой конструкцией:

var s = (new XMLSerializer).serializeToString(element)

но как вставить это в другой документ?

пробовал так:
$('#svg').append(s)
элемент добавляется но не отрисовывается

P.S.
для добавления элементов, во всех примерах, используется такой подход:
var el = document.createElementsNS('http://www.w3.org/2000/svg', 'line');
el.setAttributeNS(...)
...
document.getElementById('svg').appendChild(el);
но для этого придется либо отказаться от сериализации или парсить ее перед добавление элемента, что неприемлемо

Вопрос:
как вставить в svg сериализованный svg-элемент?

MallSerg
06.07.2015, 11:22
http://www.pk25.ru/upload_files/news/3916_1.jpg
Опять нет тестового примера на котором воспроизводится проблема =(.
Остается только доставать хрустальный шар и гадать что же у тебя не работает так как надо.

элемент добавляется но не отрисовывается.
С чего ты это взял?
может быть JS вернул ошибку?
может быть отрисовывается но не там где ты ожидаешь?
может быть масштаб отрисованного элемента меньше одного пиксела?

ravend
06.07.2015, 12:48
http://www.pk25.ru/upload_files/news/3916_1.jpg
Опять нет тестового примера на котором воспроизводится проблема =(.
Остается только доставать хрустальный шар и гадать что же у тебя не работает так как надо.

.
С чего ты это взял?
может быть JS вернул ошибку?
может быть отрисовывается но не там где ты ожидаешь?
может быть масштаб отрисованного элемента меньше одного пиксела?

смотрю в консоле (chrome)
js ошибку не вернул
элемент находится на своем месте по иерархии в DOM структуре
на странице элемент не отрисован
ощущение что должен быть какой то метод для рендеринга, как например в ангуляре scope.apply()


спасибо за помощь,
задача решена другим путем, нашел метод:
document.body.insertAdjacentHTML()