1. ホーム
  2. javascript

[解決済み] 背景画像が読み込まれているかどうかを確認するにはどうすればよいですか?

2022-04-22 06:58:07

質問

bodyタグに背景画像を設定し、以下のようなコードを実行したいのですが。

$('body').css('background-image','http://picture.de/image.png').load(function() {
    alert('Background image done loading');
    // This doesn't work
});

背景画像が完全に読み込まれていることを確認するには?

解決方法は?

これを試してみてください。

$('<img/>').attr('src', 'http://picture.de/image.png').on('load', function() {
   $(this).remove(); // prevent memory leaks as @benweet suggested
   $('body').css('background-image', 'url(http://picture.de/image.png)');
});

これはメモリ上に新しい画像を作成し、src が読み込まれたときに load イベントを使用して検出します。

EDITです。 をVanillaのJavaScriptで書くと、次のようになります。

var src = 'http://picture.de/image.png';
var image = new Image();
image.addEventListener('load', function() {
   body.style.backgroundImage = 'url(' + src + ')';
});
image.src = src;

は、プロミスを返す便利な関数に抽象化することができます。

function load(src) {
    return new Promise((resolve, reject) => {
        const image = new Image();
        image.addEventListener('load', resolve);
        image.addEventListener('error', reject);
        image.src = src;
    });
}

const image = 'http://placekitten.com/200/300';
load(image).then(() => {
   body.style.backgroundImage = `url(${image})`;
});