Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: Anthony от 15 Декабря 2005, 16:23:09

Название: Обновление графиков
Отправлено: Anthony от 15 Декабря 2005, 16:23:09
Добрый день!

Столкнулся я с проблемой. Разработываю сайт в одном из разделом которого будут выводиться графики - биржевая информация. Сами картинки формаруются php модулем jpgraph, данные берутся из БД и все работает.

Проблемы начались, когда начал писать скрипт для обновления картинок, чтобы все страницу не перезагружать. При попытке присвоить нужному объекту img новый урл графики исчезают со страницы. Это в ИЕ, в firefox-е все работает и графики нормально обновляются.

Еще такая штука. Когда в ИЕ картинки исчезают на их месте появляется пустай картинка размером 20х20 px и если на ней вызвать попап-меню и сказать "показать картинку", тогда она подгружается.

Может кто-нибудь знает как можно обойти этот баг?
Название: Обновление графиков
Отправлено: CGVictor от 15 Декабря 2005, 18:54:00
Anthony
Цитировать
Anthony:
присвоить нужному объекту img новый урл

Вот отсюда поподробнее, пожалуйста.

В IE замечательно работает конструкция img.src=\'url\';
Название: Обновление графиков
Отправлено: Anthony от 15 Декабря 2005, 19:01:01
Эта конструкция работает, только картинка не успечает подгрузиться, насколько я понимаю. А предварительно ее загружать нельзя, т. к. информация, отображаемая на графиках, динамическая и меняется постоянно.
Название: Обновление графиков
Отправлено: CGVictor от 15 Декабря 2005, 19:10:11
Anthony
Делать через объект Image (в поиск по прелоадингу картинок)
Название: Обновление графиков
Отправлено: Anthony от 15 Декабря 2005, 22:45:46
Тоже не помогает, пробовал.

Этот код дает тот же результат, что и простое присваивание урл:
image1 = new Image();
image1.src = \'url\';
document.image2.src = image1.src;

А загружить картинку совсем заранее нельзя, т. к. уже писал - информация меняется постоянно, а графики должны отображать посление данные. Ну например, помимо прочего на графике показывается текущее время с точностью до секунды.
Название: Обновление графиков
Отправлено: CGVictor от 16 Декабря 2005, 23:32:11
Anthony
А если что-то вроде
image1 = new Image();
image1.onLoad= function() {document.image2.src = image1.src;};
image1.src = \'url\';

???
Название: Обновление графиков
Отправлено: CGVictor от 16 Декабря 2005, 23:33:29
Anthony
А вообще, чем качать ежесекундно немаленькую картинку, лучше лить данные путем исп. ajax и отрисовывать соббсно js-ом.
Имхо.
Название: Обновление графиков
Отправлено: Anthony от 19 Декабря 2005, 11:57:41
Цитировать
image1 = new Image();
image1.onLoad= function() {document.image2.src = image1.src;};
image1.src = \'url\';

Идея хорошая, но почему-то не работает. Вообще ничего не происходит и ошибок никаких не выдает.

Цитировать
А вообще, чем качать ежесекундно немаленькую картинку, лучше лить данные путем исп. ajax и отрисовывать соббсно js-ом.

Да собственно нет такой необходимости каждую секунду обновлять график. Все проще, нужно чтобы на графике отобразилась текущая информация. Т. е. если странице загружена 10 мин. назад, то при обновлении картинки на ней должна отображаться инфа с текущим временем, а не 10-и минутной давности.

По поводу отрисовки js-ом идея хорошая за исключением одного, в данный момент графики рисует спец. библиотека на основе данных. А на то, чтобы самим переписать эту библиотеку уйдет туева куча времени. Делаться это правда все-равно будет, только значительно позже...
Название: Обновление графиков
Отправлено: Anthony от 19 Декабря 2005, 12:07:17
img1.onLoad = function() { alert(\'test\'); };

Даже алерта нет...
Название: Обновление графиков
Отправлено: CGVictor от 19 Декабря 2005, 13:38:08
Anthony
Цитировать
Anthony:
Т. е. если странице загружена 10 мин. назад, то при обновлении картинки на ней должна отображаться инфа с текущим временем, а не 10-и минутной давности.

Стоп, а вот отсюда снова по-подробнее.
А что, оно по умолчанию не так?
Т.е., тебе нужно, чтобы по refresh-у страницы страница бралась с сервера (как и должна), а она у тебя из кэша?...

Цитировать
Anthony:
Даже алерта нет.

Да, протестил. Действительно работать не хочет, даже с созданием отдельных функции и передачей имени (хотя в соотв. с документацией должен). Спишем на глюки браузеров :(
Название: Обновление графиков
Отправлено: virka от 19 Декабря 2005, 15:23:48
Нечто подобное бывает в IE, когда стоит в , и аттрибуту href присвоенно какое-нибудь блокирующее действие (типа void(0)). Браузер картинки загружает, но не показывает.
Название: Обновление графиков
Отправлено: Anthony от 19 Декабря 2005, 15:44:50
Похоже на то, т. к. картинки обновлялись по ссылке со значением href="javascript:void(0)". А как с этим можно бороться?
Название: Обновление графиков
Отправлено: virka от 19 Декабря 2005, 16:18:01
href="#"
Название: Обновление графиков
Отправлено: Anthony от 19 Декабря 2005, 16:21:50
А в этом случае разве перезагрузки страницы не происходит?

Ссылка-то ничего не делает, это понятно, а вот страница перезагружается с сервера. А этого как раз и не нужно делать.
Название: Обновление графиков
Отправлено: virka от 19 Декабря 2005, 16:26:16
А для чего они вообще у тебя стоят в ?
Название: Обновление графиков
Отправлено: CGVictor от 20 Декабря 2005, 15:26:49
Anthony
do something; return false;">