2012-08-28 10 views
5

muszę zrobić coś takiego:  w Raphael JS

paper.text(Left, Top, " " + this._p.Label + ":"); 
paper.text(Left, Top, " " + this._p.Label + ":"); 

Ale spacje dołączany na początku nie pokaże, czy pokazać jak   w tekście.

Próbowałem:

label.attr({"xml:space": "preserve"}); 

... bez skutku.

Czy mimo to dostęp do węzła SVG w Raphael JS, więc mogę ustawić

setAttributeNS("http://www.w3.org/XML/1998/namespace","space","preserve"); 

(czy jest jakiś inny sposób, aby rozwiązać ten problem?)

Odpowiedz

3

Tak, na pewno można zastosować, że przestrzeni nazw atrybut bezpośrednio do elementu SVG zarządzanego przez Raphaela. Jest to prosta:

paper.canvas.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space","preserve"); 

Udokumentowane być funkcjonalne here.

+0

Dzięki! Jesteś niesamowity! Czy wiesz również, jak uzyskać indywidualne elementy SVG? –

+2

Nie jestem taki wspaniały - nauczyłem się odpowiedzi na to pytanie, zadając je w innej formie gdzie indziej =) W każdym przypadku, możesz uzyskać dostęp do elementów svg powiązanych z obiektem Raphael przez odniesienie do 'element.node'. Twoje zdrowie! –

2

Chociaż wydaje się nieco [1] rozwiązany, natknąłem this discussion o tym samym numerze, co raczej sugeruje przestrzenie zamienić \u00a0. Można to łatwo osiągnąć za pomocą funkcji łańcuchowej .replace(/ /g,'\u00a0').


Przedziały wiodące węzła tekstowego w danym łączu nie działają w przypadku Mac Safari v.6.0.5. Nie wiem, jak to wygląda w innych przeglądarkach i systemach operacyjnych.