我有这样的代码,使用 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 大。
最佳答案
您是否尝试过使用定时器延迟为“0”或“10”的定时器?我经常使用这种技术将工作从当前运行循环中推出,因为在重绘 ghas 完成后会触发计时器。幸运的是,只有在重绘完成后才会触发绑定(bind)。我不确定这是否对您的特定实例有帮助,因为我不知道您在页面中还做了什么 - 它不会有帮助,例如,如果您正在进行一些异步数据处理。
关于html - SVG 加载事件过早调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10953043/