在继续之前等待图像加载的非超时方法?

时间:2012-06-14 14:28:27

标签: mootools delay

我有一个Fx.Slide实例,它通过ajax加载内容,然后滑动打开元素。它正确地等待AJAX​​调用返回(并填充其目标元素的内容)然后滑动打开,但因为我没有传输图像数据,只有url,当Fx.Slide实例时,用户的浏览器仍在下载图像被切换了。

因此,当测量元素时,不会考虑图像的大小,也不会向远处滑开。

.delay()会起作用,但这是一种黑客攻击方法。

Relevant jsFiddle


解决方案

感谢lorenzo-s,以下解决方案非常有效:

var container = document.id('something');
new Request({
    url: '/path/to/listener',
    onSuccess: function(imageUrl) {
        Asset.image(imgSrc, {
            title: 'Something',
            onLoad: function() {
                // .. trigger the Fx.Slide instance here
            }
        }).inject(container);
    }
});

1 个答案:

答案 0 :(得分:2)

您应该使用Mootools More中的Asset.image()方法。

该方法预加载图像并返回img元素。您可以使用onLoad属性(在第二个参数对象上),一旦图像“准备就绪”,将调用该属性。

Asset.image('http://url.to/your/image.jpg', {
    onLoad: function() {
        alert('Image ready.');
    }
});

此处更新了示例: http://jsfiddle.net/6Lpeu/3/