Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вставить сериализованную строку в SVG ? (https://javascript.ru/forum/misc/56832-kak-vstavit-serializovannuyu-stroku-v-svg.html)

ravend 06.07.2015 10:34

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

требуется перенести часть элементов из одного 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


Опять нет тестового примера на котором воспроизводится проблема =(.
Остается только доставать хрустальный шар и гадать что же у тебя не работает так как надо.

Цитата:

Сообщение от ravend
элемент добавляется но не отрисовывается

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

ravend 06.07.2015 12:48

Цитата:

Сообщение от MallSerg (Сообщение 377808)

Опять нет тестового примера на котором воспроизводится проблема =(.
Остается только доставать хрустальный шар и гадать что же у тебя не работает так как надо.

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

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


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


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