Svg getComputedTextLength函数总是返回零

dot*_*abs 8 svg d3.js

你好我试着整合这个d3 zoomable treemap

http://mbostock.github.io/d3/talk/20111018/treemap.html

但是getComputedTextLength()总是返回0.我也尝试了getBBox(),但它返回一个所有属性为零的对象.

    .text(function(d) { return d.name; })
    .style("opacity", function(d) {
         d.w = this.getComputedTextLength(); 
         return d.dx > d.w ? 1 : 0;
    });
Run Code Online (Sandbox Code Playgroud)

我需要把我的文字包裹在一个tspan
还有什么其他原因可以产生这种

Ori*_*elt 38

我意识到这已经晚了一年多,但我最近遇到了同样的问题,这可能对某人有所帮助.this.getComputedTextLength()如果text元素尚未呈现,或者如果容器或其任何父容器在呈现元素时display设置为none,则返回0 text.

  • 是否有可能在呈现元素时执行代码?因为`setTimeout`对我来说似乎不是一个很好的解决方案. (8认同)
  • 我应该先用Google搜索,这样可以节省我很多时间!在svg变得可见之后,通过在文本的渲染中添加一个小的`setTimeout`来解决我的问题 (3认同)
  • @mar 询问:您能否添加如何在渲染后定位文本元素? (2认同)