Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.12.2011, 20:21
Интересующийся
Отправить личное сообщение для ravencrow Посмотреть профиль Найти все сообщения от ravencrow
 
Регистрация: 04.08.2011
Сообщений: 12

Как добавить кэширование изображения?
Есть такой гаджет для Windows7, раз в час загружает изображение с курсами валют и графиком. Так вот проблема в том, что если вдруг в момент обновления интернет не работал, то вместо изображения целый час будет висеть черный квадрат до следующего обновления.
Нужно добавить условие чтоб если не удалось загрузить изображение, то отображалось бы предыдущее изображение взятое из кэша.
Помогите пожалуйста.
<html xmlns="http://www.w3.org/1999/xhtml">

<script type="text/javascript">
function beginrefresh(){
var oBackground = document.getElementById("background");
oBackground.src = "http://vitiy.info/Currency/currencyRates.png?"+Math.random();
setTimeout("beginrefresh()",60*60*1000)
}
</script>

<head>
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="refresh" content="5" > 
	<title>CBRF Rates</title>
	<style type="text/css">
		body{
			width:160;
			height:166; 	
			margin:0px;
			padding:0px;				 		
		}		
		span{
			font-family: Tahoma;
			font-size: 12pt;
		}
		img
		{
			margin:0px;
			padding:0px;
		}
	</style>
</head>
<body onload="beginrefresh();">
<div>
	<g:background id="background" src="http://vitiy.info/Currency/currencyRates.png" style="width:100%;height:100%;z-index: -1; position: absolute; top: 0; left: 0;"></g:background>

</div>
</body>
</html>

Последний раз редактировалось ravencrow, 18.12.2011 в 10:24.
Ответить с цитированием
  #2 (permalink)  
Старый 18.12.2011, 10:19
Интересующийся
Отправить личное сообщение для ravencrow Посмотреть профиль Найти все сообщения от ravencrow
 
Регистрация: 04.08.2011
Сообщений: 12

что никто не поможет ?
Ответить с цитированием
  #3 (permalink)  
Старый 18.12.2011, 10:36
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

не имею представления как можно заставить браузер не менять рисунок в случае неудачного обновления.
Ответить с цитированием
  #4 (permalink)  
Старый 18.12.2011, 11:13
Интересующийся
Отправить личное сообщение для ravencrow Посмотреть профиль Найти все сообщения от ravencrow
 
Регистрация: 04.08.2011
Сообщений: 12

А если так onerror="image/currencyRates.png"
а файл currencyRates.png предварительно загрузить в папку image на компе
Ответить с цитированием
  #5 (permalink)  
Старый 18.12.2011, 11:20
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от ravencrow
а файл currencyRates.png предварительно загрузить в папку image на компе
Предыдущую картинку загрузить пользователю в комп? Сомневаюсь что через яваскрипт это получиться сделать. Можно конечно заюзать канву и в нее засовывать загруженную картину в случае успешности. А вообще да отследить можно событием еррор, но заставить браузер не менять рисонок... хм... хотя можно извернуться примерно так:

создаем объект Image подгружаем в него рисунок, если успешно, заменяем в основном теге на него, если нет, то картинка будет стоять не изменно... Примерно так:
function beginrefresh() {
    var im = new Image(),
        src = "http://vitiy.info/Currency/currencyRates.png?"+Math.random();

    im.onload = function() {
        // Картинка успешно загрузилась
        var oBackground = document.getElementById("background");
        oBackground.src = src;
        setTimeout(beginrefresh,60*60*1000);
    }
    im.onerror = function() {
        // при ошибке можно попробовать загрузить позже
        setTimeout(beginrefresh,60*1000);
    }
    im.src = src;
}

Последний раз редактировалось devote, 18.12.2011 в 11:23.
Ответить с цитированием
  #6 (permalink)  
Старый 18.12.2011, 11:49
Интересующийся
Отправить личное сообщение для ravencrow Посмотреть профиль Найти все сообщения от ravencrow
 
Регистрация: 04.08.2011
Сообщений: 12

devote спасибо, помогло.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как прочитать контент из файла и добавить его к текущей странице fedotxxl jQuery 0 01.12.2011 15:12
Как обрезать строку и добавить символы в середине, в зависимости от длинны строки andreyua Firefox/Mozilla 12 10.12.2010 15:44
Как добавить элемент в обьект json Юрий Игоревич Общие вопросы Javascript 2 26.10.2009 15:01
Как добавить еще поле? Jony X jQuery 0 30.08.2009 19:21
как узнать размер изображения x-yuri Общие вопросы Javascript 4 24.01.2009 22:29