2013-03-14 3 views
0

У меня есть gif, который я сделал в фотошопе (загрузочное колесо), но я обнаружил, что способ, которым я его использую (скрывать, а затем показывать с помощью css и более писать с javascript позже) тоже слишком с самого начала он очень сильно проскальзывает. поэтому я решил кэшировать изображение, прежде чем позвонить ему. так вот как я это сделал:Javascript not caching images

function preloadImages(array) { 
    for (var i = 0; i < array.length; i++) { 
     var img = new Image(); 
     img.src = array[i]; 
     preloadImages.list.push(img); 
    } 
} 

var imageURLs = [ 
    "loading.gif" 
]; 

Какой должен работать, если я не ошибаюсь. Но на всякий случай я также пробовал:

loading = new Image(60,60) 
loading.src = "images/loading.gif" 

который я вытащил из учебника. Теперь, когда я реализую это (в настоящее время первый), а затем вызывается изображение в дальнейшем позже, он, похоже, работает быстрее, и я вижу его в своем кеше. однако, будучи скептиком, я решил разместить изображение, которое я никогда не использую в HTML, и посмотреть, будет ли он кэшироваться (как и должно быть), но потом никогда его не назовешь. так Heres мои новые JS: я добавил в today.gif

function preloadImages(array) { 
    for (var i = 0; i < array.length; i++) { 
     var img = new Image(); 
     img.src = array[i]; 
     preloadImages.list.push(img); 
    } 
} 

var imageURLs = [ 
    "loading.gif", 
    "today.gif" 
]; 

Примечание Теперь, если мое понимание кэширования правильно, это изображение должно быть в кэше, даже если я никогда не называю это в моем «сырой» HTML правильно? ну его нет. что заставляет меня задаться вопросом, был ли загрузочный гид даже кэширован или если мой браузер просто решил немного сотрудничать. есть идеи? Вот что кэш выглядеть после перезагрузки свежих ясно со вторым Фрагментом кодом JavaScript в использовании:

cache

поэтому вопросы здесь: Он работает, даже если кэш говорит, что это не так? Я представляю вещи? Я делаю это правильно/правильно ли я понимаю местный кеш? Если нет, может кто-нибудь объяснить мне, где я ошибаюсь? веселит.

+0

Можете ли вы проверить вкладку «сеть» в своих инструментах браузера, чтобы узнать, действительно ли выполняется запрос к GIF? –

+1

Вы вызываете функцию предварительной загрузки? 'preloadImages (imageURLs);' –

+0

Выбросить предупреждение ('ASDF'); 'после окончания этого цикла' for' и посмотреть, всплывает ли он. (Метод отладки бедняга.) –

ответ

1

Функция, которую вы определяете, ожидает массив как аргумент.

Пробег: preloadImages(["images/loading.gif", "images/today.gif"]);. В настоящее время вам не хватает закрывающих кавычек и не передают массив, а две отдельные строки в качестве аргументов.

0

Вы делаете это неправильно -

При создании объекта изображения внутри ваш цикл, сделать это в функции закрытия или предыдущий объект получает перезаписан последней, характер его бытие asynchronouse -

(function(i){ 
var img = new Image(); 
img.src= array[i];}(i)) 

также, создание списка и нажатие на него объекта абсолютно бесполезно!