Как создать обратный вызов JavaScript для знания, когда изображение загружается?

120
задан Ciro Santilli 新疆改造中心法轮功六四事件 1 April 2018 в 14:51
поделиться

2 ответа

Image.onload () будет часто работать.

Для использования его, несомненно, необходимо будет связать обработчик событий перед установкой атрибута src.

Ссылки по теме:

Использование В качестве примера:

<html>
<head>
<title>Image onload()</title>
</head>
<body>

<img src="#" alt="This image is going to load" id="sologo"/>

<script type="text/javascript">
window.onload = function () {

    var logo = document.getElementById('sologo');

    logo.onload = function () {
        alert ("The image has loaded!");        
    };

    setTimeout(function(){
        logo.src = 'http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png';         
    }, 5000);
};
</script>
</body>
</html>
64
ответ дан dota2pro 24 November 2019 в 01:38
поделиться

Можно использовать .complete свойство класса изображения JavaScript.

у меня есть приложение, где я храню много Объектов изображения в массиве, который будет динамично добавлен к экрану, и поскольку они загружаются, я пишу обновления другого отделения на странице. Вот фрагмент кода:

var gAllImages = [];

function makeThumbDivs(thumbnailsBegin, thumbnailsEnd)
{
    gAllImages = [];

    for (var i = thumbnailsBegin; i < thumbnailsEnd; i++) 
    {
        var theImage = new Image();
        theImage.src = "thumbs/" + getFilename(globals.gAllPageGUIDs[i]);
        gAllImages.push(theImage);

        setTimeout('checkForAllImagesLoaded()', 5);
        window.status="Creating thumbnail "+(i+1)+" of " + thumbnailsEnd;

        // make a new div containing that image
        makeASingleThumbDiv(globals.gAllPageGUIDs[i]);
    }
}

function checkForAllImagesLoaded()
{
    for (var i = 0; i < gAllImages.length; i++) {
        if (!gAllImages[i].complete) {
            var percentage = i * 100.0 / (gAllImages.length);
            percentage = percentage.toFixed(0).toString() + ' %';

            userMessagesController.setMessage("loading... " + percentage);
            setTimeout('checkForAllImagesLoaded()', 20);
            return;
        }
    }

    userMessagesController.setMessage(globals.defaultTitle);
}
20
ответ дан Jon DellOro 24 November 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: