簡體   English   中英

JavaScript 檢測圖像是否在緩存中

[英]JavaScript detect if image is in cache

我目前正在使用 jQuery 加載圖像並在完全加載后將其淡入。 但是,我現在想檢測我嘗試加載的圖像是否已經在瀏覽器緩存中 - 如果它在 3 秒后淡入

有誰知道我怎么能做到這一點?

沒有瀏覽器功能可以提前告訴您緩存中是否有內容。

如果您想要緩存它,您可以預加載它,以便在您下次想要使用它時很可能會緩存它,但是沒有辦法知道它是否已經被緩存。

您可以加載圖像,然后計算是否立即加載,如果圖像加載時間少於 1 秒(可能來自緩存)與加載時間更長(可能來自網絡),則采取不同的操作。 這將涉及在短時間內設置 onload 處理程序和setTimeout()並根據先發生的情況采取行動。

與往常一樣,如果您向我們描述您真正想解決的問題,我們可能會為您提供更好的建議。

如果您想要做的(這只是閱讀您的問題的猜測)是在 3 秒內(如果已緩存)或在加載時(如果未緩存)淡入圖像,那么您可以使用代碼像這樣做到這一點:

工作演示: http : //jsfiddle.net/jfriend00/XqJpT/

function now() {
    return (new Date()).getTime();
}

function fadeMe(img, always) {
    var self = $(img);
    if (!self.data("faded") && (always || (now() - self.data("baseTime") >= 3000))) {
        self.fadeIn();
        self.data("faded", true);
    }
}

var img = $('<img class="initiallyHidden">')
    .data({
        baseTime: now(),
        faded: false,
        loaded: false
    })
    .appendTo(document.body)
    .load(function() {
        $(this).data("loaded", true);
        fadeMe(this, false);
    })
    .attr("src", "http://photos.smugmug.com/photos/344291068_HdnTo-S.jpg");

setTimeout(function() {
    if (img.data("loaded")) {
        fadeMe(img, true);
    }
}, 3000);

圖像具有“完整”屬性,如果圖像從緩存中出來,該屬性可能會立即為真。

http://www.w3.org/TR/html5/the-img-element.html#dom-img-complete

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM