Dom 获取<;的边界框;使用>;外部参照

Dom 获取<;的边界框;使用>;外部参照,dom,d3.js,svg,Dom,D3.js,Svg,我正在编写一个应用程序,它使用D3制作一些SVG图表。此应用程序在图表上呈现大量注释 注释显示为图标,因此我创建了一个外部XML文件,其中包含部分中定义的图标,并通过插入元素引用它们,如下所示: <use x="100" y="50" xlink:href="defs.xml#iconname" /> b、 xml 和铬: getBoundingClientRect = 107,107 - 107,107 getBBox = x=0,y=0 - w=0,h=0 如果我将内联放置在

我正在编写一个应用程序,它使用D3制作一些SVG图表。此应用程序在图表上呈现大量注释

注释显示为图标,因此我创建了一个外部XML文件,其中包含
部分中定义的图标,并通过插入
元素引用它们,如下所示:

<use x="100" y="50" xlink:href="defs.xml#iconname" />
b、 xml

和铬:

getBoundingClientRect = 107,107 - 107,107
getBBox = x=0,y=0 - w=0,h=0
如果我将
内联放置在同一文档中,则不会发生这种情况,并且我获得了正确的宽度和高度(尽管由于以下原因,Chrome中的x&y不正确)。但我不希望它们出现在同一个文档中,这样我就可以集中定义所有图标

我认为这是由于外部引用定义的异步特性——浏览器可能必须获取这些定义。请注意,页面是动态构造的,因此它不仅仅是等待
onLoad
或发出类似事件的情况

当外部引用已加载时,有没有任何方法可以获得回调

<?xml version="1.0" standalone="no"?>
<svg width="0" height="0" version="1.1" xmlns="http://www.w3.org/2000/svg">

    <defs>
        <g id="test_icon">
            <rect width="50" height="50" />
        </g>
    </defs>

</svg>
getBoundingClientRect = 8,8 - 8,8
getBBox = x=0,y=0 - w=0,h=0
getBoundingClientRect = 107,107 - 107,107
getBBox = x=0,y=0 - w=0,h=0