Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.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
Html 调用SVG onload事件太早?_Html_Svg_Jquery Svg - Fatal编程技术网

Html 调用SVG onload事件太早?

Html 调用SVG onload事件太早?,html,svg,jquery-svg,Html,Svg,Jquery Svg,我有这样的代码,使用jQuerySVG 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.addEv

我有这样的代码,使用jQuerySVG

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


我做错什么了吗?是否有其他方法可以检测SVG DOM何时可用?我曾考虑过使用计时器,但这真的很难,特别是考虑到我的SVG文件可能只有几MB大。

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

页面正在异步加载SVG数据,是的。最后,我使用了一个循环来检查内容是否每50毫秒准备好一次(现在忘记了)。