html - SVG 加载事件过早调用?

标签 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 大。

最佳答案

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

关于html - SVG 加载事件过早调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10953043/

相关文章:

jquery - SVG 中的图像元素不占据整个矩形 - jquery

javascript - 外部链接打不开

php - 如果无法解析为 XML,如何获取页面的 <title> 标签内容?

java - 如何用Java与网页交互?

css - 无法让我的 css 关键帧悬停投影动画在我的 svg 上工作

html - 为什么 SVG 过滤器不适用于我的代码中的 HTML 元素?

javascript - 如何在拖动太阳时转换背景?

css - 创建响应式加载器内容

svg - 在D3.js中实时绘制线条

jquery - 使用动态创建的 SVG 作为选项标签的背景图像