我们如何检测图像加载完成在我们的网页上
本文关键字:我们 网页 加载 图像 何检测 检测 | 更新日期: 2023-09-27 18:04:08
我想把图像放入字幕滚动文本中。因为字幕文本函数需要在开始滚动之前检测它正在滚动的项目(文本和图像)的长度。这只能在图像加载到页面上时完成,这将需要一些时间,因为我的图像来自服务器。所以,我需要知道图片是什么时候加载完成的这样我才能开始滚动。
下面是我现在使用的图像完成加载检测javascript。我用的是socket。IO接收图像信息:
var images_expected = 0;
socket.on('res-displaySetting', function(display){
images_expected = display.runningText.length;
$('.marquee').marquee('destroy');
var html = "";
for(var k=0; k < display.runningText.length; k++)
{
if ((display.runningText[k].image == "") && (display.runningText[k].message == ""))
{
images_expected--;
continue;
}
else if (display.runningText[k].image == "")
{
html += display.runningText[k].message;
images_expected--;
}
else if (display.runningText[k].message == "")
html += " <img src='" + serverIP + "/img/" + display.runningText[k].image + "'> ";
else
html += " <img src='" + serverIP + "/img/" + display.runningText[k].image + "'> " + display.runningText[k].message;
}
$('.marquee').html(html);
if (html != "") initMarquee();
});
function initMarquee() {
interval = window.setInterval(checkImagesLoaded, 1000);
}
function checkImagesLoaded() {console.log("checking");
if ($('.marquee img').length === images_expected) {
clearInterval(interval);
setTimeout(startMarquee);
}
}
function startMarquee() {
$('.marquee').marquee({duration: 8000});
}
有一个checkImageLoad()函数来检查图像是否已加载。它会检查1秒。之后,字幕滚动文本将开始。有时图像会加载完毕,但有时图像不会加载完毕,只是显示一个方形的空框。
我尝试将检查时间增加到5秒或10秒也没有用。有时它就是无法加载。我想它会把这个方形的空框当作已经加载的图片。
你们觉得怎么样?有没有更好的方法来检测图像完成加载?
看一下。load() jquery函数
https://api.jquery.com/load-event/如果使用
$( "img" ).load(function() {
// Handler for .load() called.
});
将在img加载完成后执行