admin管理员组文章数量:1332896
I am creating charts with d3.js+svg+javscript/typescript. I need to know length of texts to append it in proper places.
I am using/was trying to use functions getBBox() and getComputedTextLength(), but... getBBoX works only when I am generating chart for the first time (for second time and next it returns 0), while getComputedTextLength() works... just sometimes. From that what I read the problem could be that svgtext is not generated before I am trying to read its width/height.
export function ReturnWidthOfText(text1, rotate, fontSize, someSVGGroup , fontName)
{
var tempText;
if (rotate == true)
{
tempText = someSVGGroup.append("svg:text")
.attr("id", "lolo")
.style("font-size", fontSize + "px")
.style("font-family", fontName)
.attr("transform", "rotate(270)")
.text(text1);
}
else
{
tempText = someSVGGroup.append("svg:text")
.attr("id", "lolo")
.style("font-size", fontSize + "px")
.style("font-family", fontName)
.text(text1);
}
var width = tempText.getComputedTextLength();
document.getElementById("lolo").parentNode.removeChild(document.getElementById("lolo"))
return width;
}
export function ReturnSizeOfText(text1, rotate, fontSize, someSVGGroup, fontName) {
//let svgText = document.getElementById("lolo");
var tempText;
if (rotate == "Yes")
{
tempText = someSVGGroup.append("svg:text")
.attr("id", "lolo")
.style("font-size", fontSize + "px")
.style("font-family", fontName)
.attr("transform", "rotate(270)")
.text(text1);
}
else
{
tempText = someSVGGroup.append("svg:text")
.attr("id", "lolo")
.style("font-size", fontSize + "px")
.style("font-family", fontName)
.text(text1);
}
let size;
size = { Width: 0, Height: 0 };
let element: any = document.getElementById("lolo");
let bbox = element.getBBox();
//console.log(text.node().getBBox());
size.Width = bbox.width;
size.Height = bbox.height;
//var width = tempText.getComputedTextLength();
document.getElementById("lolo").parentNode.removeChild(document.getElementById("lolo"))
return size;
}
Could anyone advise how to improve those functions to work properly? As I am preparing "App for Office" I am interested mainly in solution for IE and Edge.
I am creating charts with d3.js+svg+javscript/typescript. I need to know length of texts to append it in proper places.
I am using/was trying to use functions getBBox() and getComputedTextLength(), but... getBBoX works only when I am generating chart for the first time (for second time and next it returns 0), while getComputedTextLength() works... just sometimes. From that what I read the problem could be that svgtext is not generated before I am trying to read its width/height.
export function ReturnWidthOfText(text1, rotate, fontSize, someSVGGroup , fontName)
{
var tempText;
if (rotate == true)
{
tempText = someSVGGroup.append("svg:text")
.attr("id", "lolo")
.style("font-size", fontSize + "px")
.style("font-family", fontName)
.attr("transform", "rotate(270)")
.text(text1);
}
else
{
tempText = someSVGGroup.append("svg:text")
.attr("id", "lolo")
.style("font-size", fontSize + "px")
.style("font-family", fontName)
.text(text1);
}
var width = tempText.getComputedTextLength();
document.getElementById("lolo").parentNode.removeChild(document.getElementById("lolo"))
return width;
}
export function ReturnSizeOfText(text1, rotate, fontSize, someSVGGroup, fontName) {
//let svgText = document.getElementById("lolo");
var tempText;
if (rotate == "Yes")
{
tempText = someSVGGroup.append("svg:text")
.attr("id", "lolo")
.style("font-size", fontSize + "px")
.style("font-family", fontName)
.attr("transform", "rotate(270)")
.text(text1);
}
else
{
tempText = someSVGGroup.append("svg:text")
.attr("id", "lolo")
.style("font-size", fontSize + "px")
.style("font-family", fontName)
.text(text1);
}
let size;
size = { Width: 0, Height: 0 };
let element: any = document.getElementById("lolo");
let bbox = element.getBBox();
//console.log(text.node().getBBox());
size.Width = bbox.width;
size.Height = bbox.height;
//var width = tempText.getComputedTextLength();
document.getElementById("lolo").parentNode.removeChild(document.getElementById("lolo"))
return size;
}
Could anyone advise how to improve those functions to work properly? As I am preparing "App for Office" I am interested mainly in solution for IE and Edge.
Share Improve this question edited Nov 22, 2016 at 15:13 buks asked Nov 22, 2016 at 14:14 buksbuks 4351 gold badge7 silver badges22 bronze badges 1- Possible duplicate of SVG -> getBBox fails but only half the time – Stefan Commented Mar 26, 2019 at 11:14
1 Answer
Reset to default 10I've found an answer. It was returning 0s, because it returns good results only when svg/html block is visible, while when I was trying to regenerate chart it was hidden.
本文标签: javascriptgetBBox() and getComputedTextLength() once workingonce notStack Overflow
版权声明:本文标题:javascript - getBBox() and getComputedTextLength() once working, once not - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742288334a2447333.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论