Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 强制重新计算svg文本大小_Javascript_Svg_Text_Tspan - Fatal编程技术网

Javascript 强制重新计算svg文本大小

Javascript 强制重新计算svg文本大小,javascript,svg,text,tspan,Javascript,Svg,Text,Tspan,我正在将tspan附加到text节点,但浏览器没有重新计算新的大小/框 JS代码: var result = document.querySelector('#result'); var result_delayed = document.querySelector('#result_delayed'); var text = document.querySelector('text'); var tspan = document.createElement('tspan'); tspan.s

我正在将
tspan
附加到
text
节点,但浏览器没有重新计算新的大小/框

JS代码:

var result = document.querySelector('#result');
var result_delayed = document.querySelector('#result_delayed');

var text = document.querySelector('text');
var tspan = document.createElement('tspan');
tspan.setAttribute('x', '0');
tspan.setAttribute('dy', '0');
tspan.innerText = 'text';
text.appendChild(tspan);

var box = text.getBBox();

result.innerHTML = box.width + ', ' + box.height;
它总是返回
0,0
,这意味着追加后不会重新计算大小

在这种情况下如何强制recalc

  • SVG元素必须使用CreateElements创建

  • innerText不是SVG元素上的函数。您可以改为使用textContent,它也适用于HTML元素

var result=document.querySelector('#result');
var text=document.querySelector('text');
var tspan=document.createElements('http://www.w3.org/2000/svg","tspan",;
tspan.setAttribute('x','0');
tspan.setAttribute('dy','0');
tspan.textContent='text';
text.appendChild(tspan);
var-box=text.getBBox();
result.innerHTML=box.width+','+box.height

结果

这解决了这个问题,即使在IE11上也非常有效。非常感谢你!