Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > динамическое обновление картинки (рисуемой)


Автор: Lottarend 13.9.2011, 07:04
У меня есть картинка, которую я рисую с помощью asp.net. Это фон дива, который я обновляю по движению мыши... что-то вроде карты, в общем.
Код

function mouseup(e) {
            var scroll = getScrollXY();
            c = e.clientX+scroll[0];
            d = e.clientY+scroll[1];
            document.getElementById("dda").style.backgroundImage = "url(WebForm2.aspx?Координаты=" + a + "_" + b + "/" + c + "_" + d + "&Параметры=/Координаты" + ")";            
        }

Так вот. Картинка эта рисуется секунду с чем-то, и безбожно мигает во время загрузки, что очень не приятно. Можно как-то сделать, чтобы предыдущая картинка сохранялась, пока изображение полностью не прорисуется?

Автор: Lottarend 13.9.2011, 08:26
Прочитал про кэширование изображения. Попытался сделать так.

Код

var im = new Image();
im.src="WebForm2.aspx?Координаты=" + a + "_" + b + "/" + c + "_" + d + "&Параметры=/Координаты" + "";   
document.getElementById("dda").style.backgroundImage = im.src; 


До этого поэкспериментировал с картинкой, смена изображения работает корректно. Что не так? Почему у div'а не меняется фон?
...

Гм, попытка 3. 
Код

var im = new Image();
im.src="WebForm2.aspx?Координаты=" + a + "_" + b + "/" + c + "_" + d + "&Параметры=/Координаты" + "";            
document.getElementById("dda").style.backgroundImage = "url("+im.src+")";
 
Заработало, но почему-то, в отличие от аналогичных действий с img, мигание никуда не делось.

Автор: Lottarend 13.9.2011, 11:51
Уже получил ответ, спасибо, помощь не требуется.

Код

var im = new Image();
im.onload = function () {
document.getElementById("dda").style.backgroundImage = "url("+im.src+")";
}
im.src="WebForm2.aspx?Координаты=" + a + "_" + b + "/" + c + "_" + d + "&Параметры=/Координаты" + "";

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)