首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在DOM render上有事件吗?

在DOM render上有事件吗?
EN

Stack Overflow用户
提问于 2013-06-06 01:19:02
回答 1查看 644关注 0票数 1

我正在使用这个javascript Library jQuery SVG来操作html页面中的外部svg。SVG的渲染速度非常慢。

当svg文件很重时,我看不到第一个动画,因为它是在渲染之前开始的。动画在发生load事件时开始,但页面尚未呈现,因此我看到动画已结束。有没有办法在javascript中捕获渲染事件?

代码语言:javascript
运行
复制
// load svg
$('#slide').svg({});
  var svg = $('#slide').svg('get');
  svg.load('slide.svg', {
  addTo: false,
  changeSize: false,
  onLoad: onLoad 
}); 
// animation start when dom is ready not when page is render
function onLoad(){ 
  $('#maskRight').animate({svgWidth: '200'}, 1500)
}
EN

回答 1

Stack Overflow用户

发布于 2013-06-06 01:53:46

我认为这里的问题是您的Javascript被加载到标记中,这意味着Javascript可能在主体加载之前开始运行。我推荐以下两个选项中的一个:

jQuery的$(Document).ready(处理程序)

http://api.jquery.com/ready/

或者您也可以通过将上面的代码挂接到主体的onLoad事件中来实现这一点,如下所示:

代码语言:javascript
运行
复制
<body onload="loadSVG">
  <stuff />
</body>
<script>
  function loadSVG(){
    $('#slide').svg({});
      var svg = $('#slide').svg('get');
      svg.load('slide.svg', {
      addTo: false,
      changeSize: false,
      onLoad: onLoad 
      });
  } 
  function onLoad(){ 
    $('#maskRight').animate({svgWidth: '200'}, 1500)
  }
</script>

我还没有测试过这段代码,但是如果我遇到这个问题并且出于某种原因不想使用jQuery的ready()函数,我会首先尝试这段代码。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16946087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档