Kurzfassung Frage: Gibt es navigator.mozIsLocallyAvailable gleichwertige Funktion, die auf allen Browsern funktioniert, oder eine Alternative?Post-loading: Überprüfen, ob ein Bild im Browser-Cache ist
Lange Version :)
Hallo, Hier ist meine Situation: ich eine Htmlhelper-Erweiterung für asp.net MVC implementieren möchten, die leicht Bild Nachladen Griff (mit jQuery).
Also rendere ich die Seite mit leeren Bildquellen mit der im Attribut "alt" angegebenen Quelle. Ich füge Bildquellen nach dem Ereignis "window.onload" ein und es funktioniert großartig.
ich so etwas wie dies tat:
$(window).bind('load', function() {
var plImages = $(".postLoad");
plImages.each(function() {
$(this).attr("src", $(this).attr("alt"));
});
});
Das Problem ist: Nach dem ersten Laden, nachgeladen Bilder werden im Cache gespeichert. Wenn die Seite jedoch 10 Sekunden zum Laden benötigt, werden die im Cache gespeicherten nachgeladenen Bilder nach diesen 10 Sekunden angezeigt.
Also ich denke, Bildquellen auf dem Ereignis "document.ready" anzugeben, wenn das Bild zwischengespeichert wird, um sie sofort anzuzeigen.
Ich habe diese Funktion gefunden: navigator.mozIsLocallyAvailable, um zu überprüfen, ob ein Bild im Cache ist. Hier ist, was ich mit jquery gemacht habe:
//specify cached image sources on dom ready
$(document).ready(function() {
var plImages = $(".postLoad");
plImages.each(function() {
var source = $(this).attr("alt")
var disponible = navigator.mozIsLocallyAvailable(source, true);
if (disponible)
$(this).attr("src", source);
});
});
//specify uncached image sources after page loading
$(window).bind('load', function() {
var plImages = $(".postLoad");
plImages.each(function() {
if ($(this).attr("src") == "")
$(this).attr("src", $(this).attr("alt"));
});
});
Es funktioniert auf Mozilla DOM aber es funktioniert nicht auf jedem anderen. Ich habe versucht, navigator.isLocallyAvailable: das gleiche Ergebnis.
Gibt es eine Alternative?
Ich denke, das wird brechen, wenn Cache läuft ab ... Sie müssten das Ablaufdatum aus dem Response-Header (der einen Ajax-Aufruf erfordern würde) in localStorage speichern, zB "localStorage [src] = expires" in logCache und 'now
Corin
Auf den zweiten Gedanken ist dies wahrscheinlich kein großes Problem, da wir über Bilder sprechen ... – Corin
Was passiert, wenn der Cache manuell gelöscht wird? – Parth