добавление текста с пробелами в текстовый элемент SVG - PullRequest
3 голосов
/ 08 декабря 2011

Я пытаюсь добавить текст, содержащий несколько пробелов, к текстовому элементу svg.Я полностью отчаиваюсь, потому что когда есть несколько пробелов друг за другом, они правильно добавляются к элементу, но не отображаются в окне браузера.

Этот парень здесь использует пробелы в текстовом элементе ион работает нормально, когда я воспроизводю его статично, но при добавлении текста с помощью js пробелы исчезают!

Значительные пробелы в SVG встроены в HTML

Как добавить текстс пробелами динамически для SVG?

Спасибо за любой ответ!

    var legend = document.createElementNS("http://www.w3.org/2000/svg", "text");
    var tspan = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
    // Set any attributes as desired
    legend.setAttribute("id","legend");
    legend.setAttribute("text-anchor", "middle");
    legend.setAttribute("alignment-baseline", "hanging");
    legend.setAttribute("xml:space","preserve");
    tspan.setAttribute("xml:space","preserve");
    tspan.setAttribute("id","tspanObj");
    var myText = document.createTextNode(legendTxt);
    tspan.appendChild(myText);
    legend.appendChild(tspan);
    legend.setAttribute("x", Math.round(this.options.windowWidth/2));
    legend.setAttribute("y", this.options.upperPadding+this.options.barH+this.options.legendDist);
    this.elements.jSvgElem.append(legend);

1 Ответ

13 голосов
/ 08 декабря 2011

Вам необходимо использовать setAttributeNS для установки атрибута в пространстве имен xml, поэтому в вашем случае ...

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

Если для текста установлено значение xml:space, дочерний tspan будет использовать егозначение, поэтому вам не нужно устанавливать его снова в вашем случае.

...