我在javascript(coffeescript)文件中使用以下代码:
myVar = document.querySelector('SVG > a:nth-child(2) > text').offsetWidth
在googlechrome中,这将返回嵌套在svg元素中的a(锚点)元素中的文本元素的宽度,正如预期的那样。在Firefox中,这会返回一个NULL。我认为我的选择器语法可能不符合Mozilla的标准,所以我也尝试了一下,但即使我可以正确地选择DOM元素(如控制台输出的),我也无法检索任何属性offsetWidth;它总是以未定义的形式出现。
现在,如果重要的话,我的SVG对象通过一些Javascript动态地注入到我的页面中。它直接放置在div的主体中,并包含在<svg>
和</svg>
标记中。
什么东西?如何确定这些元素的宽度?
谢谢!
NickFitz的答案正是您所需要的。
他提出使用SVG的标准函数getBBox()
。
myVar = document.querySelector (...).getBBox ().width