首頁 >web前端 >js教程 >如何確保在程式碼執行之前載入背景圖像?

如何確保在程式碼執行之前載入背景圖像?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-17 08:07:03672瀏覽

How to Ensure a Background Image Loads Before Code Execution?

確保在程式碼執行之前載入背景影像

將背景影像合併到body 標籤中並啟動後續程式碼執行可能會在確定時帶來挑戰如果圖像已完全加載。使用傳統的 load() 函數(如提供的範例所示)是不夠的。

解決方案:

要克服此障礙,請考慮以下方法:

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

此程式碼在記憶體中建立新影像,利用載入事件來偵測來源影像何時載入。透過在載入後刪除圖像,可以避免潛在的記憶體洩漏。

Vanilla JavaScript 實作:

對於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;

基於Promise 的抽象:

要抽象化流程,可以建立一個方便的函數,回傳一個Promise:

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})`;
});

以上是如何確保在程式碼執行之前載入背景圖像?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn