我正在使用这个javascript Library jQuery SVG来操作html页面中的外部svg。SVG的渲染速度非常慢。
当svg文件很重时,我看不到第一个动画,因为它是在渲染之前开始的。动画在发生load事件时开始,但页面尚未呈现,因此我看到动画已结束。有没有办法在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)
}
发布于 2013-06-06 01:53:46
我认为这里的问题是您的Javascript被加载到标记中,这意味着Javascript可能在主体加载之前开始运行。我推荐以下两个选项中的一个:
jQuery的$(Document).ready(处理程序)
http://api.jquery.com/ready/
或者您也可以通过将上面的代码挂接到主体的onLoad事件中来实现这一点,如下所示:
<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()函数,我会首先尝试这段代码。
希望这能有所帮助!
https://stackoverflow.com/questions/16946087
复制相似问题