Передать строку SVG из cookie в RaphaelJS - PullRequest
1 голос
/ 22 ноября 2011

У меня есть файл cookie, называемый «план», который содержит строковое значение, представляющее холст RaphaelJS, и некоторые объекты внутри него как SVG.Точные пути и т. Д. Могут различаться, но обычно это то, что сохраняется в cookie:

<svg height="100%" version="1.1" width="100%" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative;"><desc>Created with Raphaël 2.0.1</desc><defs/><path style="" fill="none" stroke="#d9e026" d="M153,74L384,74L384,304L0,304L0,150L153,150L153,74"/><path style="" fill="#333333" stroke="#d9e026" d="M160,160L160,220L220,220A60,60,0,0,0,160,160" transform="matrix(1, 0, 0, 1, -103, 84)"/><rect x="121.53846153846155" y="158.5" width="76.92307692307692" height="3" r="0" rx="0" ry="0" fill="#333333" stroke="#d9e026" style="" transform="matrix(1, 0, 0, 1, -89, -9)"/><rect x="83.0769230769231" y="156" width="76.92307692307692" height="5" r="0" rx="0" ry="0" fill="#333333" stroke="#d9e026" style="" transform="matrix(0, -1, 1, 0, 223.038, 364.039)"/></svg>

Теперь мне нужно иметь возможность передать эти данные в новый объект Raphaeljs на новой странице и добавить еще несколько путейи т. д.

Кто-нибудь может подсказать, как это сделать, поскольку я изо всех сил пытаюсь понять, с чего начать?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

В Raphael 2 появилась новая функция, которая также упрощает эти задачи. Paper.add

http://www.irunmywebsite.com/raphael/additionalhelp.php?v=2&q=paper.add

0 голосов
/ 22 ноября 2011

Если взглянуть на это поподробнее, получается, что все не так просто. Код SVG доступен только в новых браузерах (IE8 +), поэтому этот подход не будет работать в IE7 или менее. Тем не менее, объект Raphael хранит необходимые данные для использования до того, как он попадет в DOM. Я нашел очень удобный плагин для сериализации данных Raphael, а затем десериализации на выходе. Хотя у меня есть несколько проблем с десериализацией, теоретически это должно быть решение: https://github.com/jspies/raphael.serialize.

Так что плагин, по сути, позволяет мне сделать это:

Raphael canvas > serialized JSON object > String > Cookie > String > serialized JSON object > Raphael canvas.
...