Html 调用SVG onload事件太早?
我有这样的代码,使用jQuerySVGHtml 调用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
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毫秒准备好一次(现在忘记了)。