2016-09-21 34 views
1

我想在SVG text标签使用getStartPositionOfChar只包含一个空白:SVG文本元素的使用getStartPositionOfChar(或getEndPositionOfChar)用空格

SVG

<svg xmlns="http://www.w3.org/2000/svg" width="300" height="300">  
    <text id="t"> </text> 
</svg> 

JS

var t = document.getElementById('t'); 
var sp = t.getStartPositionOfChar(0); 

虽然它工作鳍e当text标签具有非空格字符时,它似乎修剪空白,导致IndexSizeError

https://jsfiddle.net/tomohiro_1221/7bmefec7/

对此有一个解决方法吗?我想在只有空白时获得开始位置(或结束位置)。

+1

作为一种变通方法尝试使用而不是常规的空间'' (非换空间)。 – Tomalak

+0

对于那些想在动态创建的文本节点上使用getStartPositionOfChar的人,请使用't.setAttributeNS('http://www.w3.org/XML/1998/namespace','xml:space','preserve')' setAttribute。 –

回答

1

您可以通过使用xml:space =“preserve”(SVG 1.1)或CSS white-space:pre;来禁用空格压缩。 (SVG 2)

var t = document.getElementById('t'); 
 
var sp = t.getStartPositionOfChar(0); 
 
console.log(sp);
svg { 
 
    white-space: pre; 
 
}
<svg xmlns="http://www.w3.org/2000/svg" width="300" height="300">  
 
    <text id="t"> </text> 
 
</svg>