SVG onload事件叫得太早?

时间:2012-06-08 17:00:16

标签: html svg jquery-svg

我有这样的代码,使用jQuery-svg

function replaceRaster(){
    $('#png').remove()
    a = $('#graphic')
    b = a.svg(a)
    a.load('IDC_Energy.svg',
         {onLoad:bind} )
   svg = document.getElementById("graphic").children[0]
   console.log(svg)
   svg.addEventListener('load', bind)
}

事件处理程序bind在jQuery-svg-dom能够选择SVG数据中的元素之前被触发。我的代码应该查看SVG并分配各种类并将侦听器附加到各种元素,但它无法找到任何元素。如果我在加载所有内容后在控制台中调用bind,它可以找到所有SVG元素。

我做错了吗?有没有其他方法可以检测SVG DOM何时可用?我曾经想过使用一个计时器,但这真的很糟糕,特别是考虑到我的SVG文件可能只有几MB。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用定时器延迟为“0”或者只是“10”的定时器?我经常使用这种技术将工作推出当前的运行循环,因为重绘ghas完成后会触发定时器。幸运的是,绑定只有在重绘完成后才会被触发。我不确定这是否会对您的特定实例有所帮助,因为我不知道您在页面中还做了什么 - 例如,如果您正在进行异步数据处理,它将无济于事。