您可以使用 ajax 调用加载图像,如果使用滚出,您可以中止调用。
在 jQuery 伪代码中,它会是这样的(请原谅我的语法错误,这只是一个例子):
1) 标记要加载的图像
$(".image").each( function(){
if ( is_in_visible_area(this) ) { // check [1] for example
$(this).addClass("load_me");
} else {
$(this).addClass("dont_load");
}
});
2)加载图像
ajax_requests = {};
$(".image.load_me").each( function(){
// load image
var a = $.ajax({
url: 'give_me_photos.php',
data: {img: photo_id},
success: function(html){
photo_by_id(photo_id), img.append(html);
}
});
ajax_requests[photo_id] = a;
});
3) 取消从屏幕加载那些
for( id in ajax_requests ) {
if ( ! is_in_visible_area(id) ) {
ajax_requests[id].abort();
}
}
当然,还要添加一些检查图像是否已经加载(例如类“加载”)
[1]。滚动后检查元素是否可见
[2]。使用 jQuery 中止 Ajax 请求