2012-08-28 25 views
5

tengo que hacer algo como:  Raphael JS

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

Sin embargo, el espacio en blanco antepuesto no va a mostrar o mostrar como   en el texto.

que he probado:

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

... sin efecto.

¿Hay alguna forma para acceder al nodo SVG en Rafael JS para poder establecer

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

(o hay alguna otra manera de resolver esto?)

Respuesta

3

Sí, definitivamente se puede aplicar ese espacio de nombres atributo directamente al elemento SVG administrado por Raphael. Es así de sencillo:

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

demostrada para ser funcional here.

+0

¡Gracias! ¡Usted es maravilloso! ¿También sabes cómo acceder a los elementos SVG induviduales? –

+2

No soy tan genial. Aprendí la respuesta a esta pregunta preguntándola de otra forma =) En cualquier caso, puedes acceder a los elementos svg asociados a un objeto Raphael haciendo referencia a 'element.node'. ¡Aclamaciones! –

2

Aunque esto parece algo [1] resuelto, me encontré con this discussion sobre el mismo tema, que más bien sugiere la sustitución de los espacios con \u00a0. Esto se puede lograr fácilmente utilizando la función de cadena .replace(/ /g,'\u00a0').


Los espacios iniciales del nodo de texto en el enlace proporcionado no funcionan para Mac Safari v.6.0.5. No estoy seguro de cómo se ve en otros navegadores y sistemas operativos.

Cuestiones relacionadas